diff options
author | Sagi Grimberg <sagi@grimberg.me> | 2017-03-19 14:16:05 +0200 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2017-04-04 09:48:23 -0600 |
commit | c0e4a6f5941ec3759fd5c7e58fc5e8b135cfee72 (patch) | |
tree | f24ea7e8ed9bb7ca01da61c6d09e57d97e42bbe7 /drivers/nvme/host/fc.c | |
parent | d19eef029dad7600b69968036e877cdcf51e860d (diff) | |
download | op-kernel-dev-c0e4a6f5941ec3759fd5c7e58fc5e8b135cfee72.zip op-kernel-dev-c0e4a6f5941ec3759fd5c7e58fc5e8b135cfee72.tar.gz |
nvme-fc: fix module_init (theoretical) error path
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>
Diffstat (limited to 'drivers/nvme/host/fc.c')
-rw-r--r-- | drivers/nvme/host/fc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 5939a0a..af196ca 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -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) |