Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a936b1ef authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller
Browse files

s390/qeth: handle failure on workqueue creation



Creating the global workqueue during driver init may fail, deal with it.
Also, destroy the created workqueue on any subsequent error.

Fixes: 0f54761d ("qeth: Support VEPA mode")
Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 901e3f49
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -6540,10 +6540,14 @@ static int __init qeth_core_init(void)
	mutex_init(&qeth_mod_mutex);
	mutex_init(&qeth_mod_mutex);


	qeth_wq = create_singlethread_workqueue("qeth_wq");
	qeth_wq = create_singlethread_workqueue("qeth_wq");
	if (!qeth_wq) {
		rc = -ENOMEM;
		goto out_err;
	}


	rc = qeth_register_dbf_views();
	rc = qeth_register_dbf_views();
	if (rc)
	if (rc)
		goto out_err;
		goto dbf_err;
	qeth_core_root_dev = root_device_register("qeth");
	qeth_core_root_dev = root_device_register("qeth");
	rc = PTR_ERR_OR_ZERO(qeth_core_root_dev);
	rc = PTR_ERR_OR_ZERO(qeth_core_root_dev);
	if (rc)
	if (rc)
@@ -6580,6 +6584,8 @@ static int __init qeth_core_init(void)
	root_device_unregister(qeth_core_root_dev);
	root_device_unregister(qeth_core_root_dev);
register_err:
register_err:
	qeth_unregister_dbf_views();
	qeth_unregister_dbf_views();
dbf_err:
	destroy_workqueue(qeth_wq);
out_err:
out_err:
	pr_err("Initializing the qeth device driver failed\n");
	pr_err("Initializing the qeth device driver failed\n");
	return rc;
	return rc;