]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
nvme-rdma: fix module_init (theoretical) error path
authorSagi Grimberg <sagi@grimberg.me>
Sun, 19 Mar 2017 04:21:42 +0000 (06:21 +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/rdma.c

index 15eb34c1c436af40fc2c506589a4c16bdcf5e26f..8592adac4747465829c985d3ccf3c3fffc595ce7 100644 (file)
@@ -2030,12 +2030,20 @@ static int __init nvme_rdma_init_module(void)
                return -ENOMEM;
 
        ret = ib_register_client(&nvme_rdma_ib_client);
-       if (ret) {
-               destroy_workqueue(nvme_rdma_wq);
-               return ret;
-       }
+       if (ret)
+               goto err_destroy_wq;
+
+       ret = nvmf_register_transport(&nvme_rdma_transport);
+       if (ret)
+               goto err_unreg_client;
 
-       return nvmf_register_transport(&nvme_rdma_transport);
+       return 0;
+
+err_unreg_client:
+       ib_unregister_client(&nvme_rdma_ib_client);
+err_destroy_wq:
+       destroy_workqueue(nvme_rdma_wq);
+       return ret;
 }
 
 static void __exit nvme_rdma_cleanup_module(void)