From 025c557a71bd06a9f6d32259f00e2218b15bf0a4 Mon Sep 17 00:00:00 2001 From: Keith Busch Date: Wed, 1 May 2013 13:07:51 -0600 Subject: [PATCH] NVMe: Free admin queue on request_irq error Fixes a potential memory leak if requesting the admin queue irq fails. Signed-off-by: Keith Busch Signed-off-by: Matthew Wilcox --- drivers/block/nvme-core.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c index 358d17700c20..391a874e4133 100644 --- a/drivers/block/nvme-core.c +++ b/drivers/block/nvme-core.c @@ -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,