NVMe: Free admin queue on request_irq error
authorKeith Busch <keith.busch@intel.com>
Wed, 1 May 2013 19:07:51 +0000 (13:07 -0600)
committerMatthew Wilcox <matthew.r.wilcox@intel.com>
Thu, 2 May 2013 18:33:53 +0000 (14:33 -0400)
Fixes a potential memory leak if requesting the admin queue irq fails.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
drivers/block/nvme-core.c

index 358d17700c2082a55b8d93f925d09ce58fc819cf..391a874e41330bb6a2cbf347070c787b671f0f43 100644 (file)
@@ -1054,14 +1054,19 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
                }
        }
 
-       if (result) {
-               nvme_free_queue_mem(nvmeq);
-               return result;
-       }
+       if (result)
+               goto free_q;
 
        result = queue_request_irq(dev, nvmeq, "nvme admin");
+       if (result)
+               goto free_q;
+
        dev->queues[0] = nvmeq;
        return result;
+
+ free_q:
+       nvme_free_queue_mem(nvmeq);
+       return result;
 }
 
 struct nvme_iod *nvme_map_user_pages(struct nvme_dev *dev, int write,