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

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
...@@ -6540,10 +6540,14 @@ static int __init qeth_core_init(void) ...@@ -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) ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment