Skip to contentSkip to conversation

nvme-fc: fix module_init (theoretical) error path

PATCH New Sagi Grimberg 3 participants 3 messages Mar 19, 2017 – Mar 27, 2017

Subsystems (2)
lore
Share & tools
lore

Sagi Grimberg

author maintainer
#0 lore raw

PATCH 3/3 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 at grimberg.me>
---
 drivers/nvme/host/fc.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
drivers/nvme/host/fc.c +10 -1
index 9690beb15e69..f77cdcf51e65 100644
@@ -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)
Signature · 1 line
2.7.4
#1 lore raw

PATCH 3/3 nvme-fc: fix module_init (theoretical) error path

looks fine

thanks

-- james

Signed-off-by James Smart <james.smart at broadcom.com>
Quoted 34 lines · Sagi Grimberg

If nvmf_register_transport happened to fail
(it can't, but theoretically) we leak memory.

Signed-off-by Sagi Grimberg <sagi at grimberg.me>
---
  drivers/nvme/host/fc.c | 11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)
drivers/nvme/host/fc.c +10 -1
index 9690beb15e69..f77cdcf51e65 100644
@@ -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)