aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/nvme
diff options
context:
space:
mode:
authorWu Bo <wubo40@huawei.com>2021-05-19 13:01:10 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-05-26 12:06:48 +0200
commit9c980795ccd77e8abec33dd6fe28dfe1c4083e65 (patch)
treeab09e972d2c5cb2273fa9e4682e46a869ede1a1c /drivers/nvme
parent4720f29acb3fe67aa8aa71e6b675b079d193aaeb (diff)
downloadkernel_replicant_linux-9c980795ccd77e8abec33dd6fe28dfe1c4083e65.tar.gz
kernel_replicant_linux-9c980795ccd77e8abec33dd6fe28dfe1c4083e65.tar.bz2
kernel_replicant_linux-9c980795ccd77e8abec33dd6fe28dfe1c4083e65.zip
nvme-loop: fix memory leak in nvme_loop_create_ctrl()
[ Upstream commit 03504e3b54cc8118cc26c064e60a0b00c2308708 ] When creating loop ctrl in nvme_loop_create_ctrl(), if nvme_init_ctrl() fails, the loop ctrl should be freed before jumping to the "out" label. Fixes: 3a85a5de29ea ("nvme-loop: add a NVMe loopback host driver") Signed-off-by: Wu Bo <wubo40@huawei.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/nvme')
-rw-r--r--drivers/nvme/target/loop.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/nvme/target/loop.c b/drivers/nvme/target/loop.c
index f6d81239be21..b869b686e962 100644
--- a/drivers/nvme/target/loop.c
+++ b/drivers/nvme/target/loop.c
@@ -578,8 +578,10 @@ static struct nvme_ctrl *nvme_loop_create_ctrl(struct device *dev,
ret = nvme_init_ctrl(&ctrl->ctrl, dev, &nvme_loop_ctrl_ops,
0 /* no quirks, we're perfect! */);
- if (ret)
+ if (ret) {
+ kfree(ctrl);
goto out;
+ }
if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING))
WARN_ON_ONCE(1);