nvme-fc: fix module_init (theoretical) error path
authorSagi Grimberg <sagi@grimberg.me>
Sun, 19 Mar 2017 12:16:05 +0000 (14:16 +0200)
committerJens Axboe <axboe@fb.com>
Tue, 4 Apr 2017 15:48:23 +0000 (09:48 -0600)
If nvmf_register_transport happened to fail
(it can't, but theoretically) we leak memory.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/fc.c

index 5939a0a4f7a5282ee9eaaf23992b05532cced04b..af196cac5ebe9f19ab12daa294bd48051c985f81 100644 (file)
@@ -2546,11 +2546,20 @@ static struct nvmf_transport_ops nvme_fc_transport = {
 
 static int __init nvme_fc_init_module(void)
 {
+       int ret;
+
        nvme_fc_wq = create_workqueue("nvme_fc_wq");
        if (!nvme_fc_wq)
                return -ENOMEM;
 
-       return nvmf_register_transport(&nvme_fc_transport);
+       ret = nvmf_register_transport(&nvme_fc_transport);
+       if (ret)
+               goto err;
+
+       return 0;
+err:
+       destroy_workqueue(nvme_fc_wq);
+       return ret;
 }
 
 static void __exit nvme_fc_exit_module(void)