From: Andrew Goodbody Date: Wed, 2 Jul 2025 16:02:10 +0000 (+0100) Subject: nvme: Fix memory leak on error path of nvme_init X-Git-Tag: v2025.10-rc1~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f074616014179eefbca6f4b86b1fa6336711ba80;p=thirdparty%2Fu-boot.git 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 --- 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)