summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Goodbody <andrew.goodbody@linaro.org>2025-07-02 17:02:10 +0100
committerTom Rini <trini@konsulko.com>2025-07-10 08:41:23 -0600
commitf074616014179eefbca6f4b86b1fa6336711ba80 (patch)
tree510cb7e6d4f31f8fb0147fe421a627d10159dd13
parent39b836d898782e31961afd16769c46d7f2730858 (diff)
nvme: Fix memory leak on error path of nvme_init
The use of log_msg_ret to log a message and return an error meant that memory allocated earlier in the function was not freed on this error path. Instead log the message in the same way that log_msg_ret would do and then goto the cleanup code to free the memory. This issue found by Smatch. Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
-rw-r--r--drivers/nvme/nvme.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 7c58ceb78f5..2b14437f69c 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -912,8 +912,10 @@ int nvme_init(struct udevice *udev)
goto free_id;
ret = bootdev_setup_for_sibling_blk(ns_udev, "nvme_bootdev");
- if (ret)
- return log_msg_ret("bootdev", ret);
+ if (ret) {
+ log_err("bootdev: returning err=%d\n", ret);
+ goto free_id;
+ }
ret = blk_probe_or_unbind(ns_udev);
if (ret)