On 11/5/25 12:07, Bin Meng wrote:
There is a memory leak during the scsi scan process due to the
strdup'ed name string is never freed. Actually it is unnecessary
to pass a strdup'ed name string to blk_create_devicef() as we can
use the name string on the stack directly.
Signed-off-by: Bin Meng <[email protected]>
---
drivers/scsi/scsi.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 05608399be1..b414d022f3f 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -584,7 +584,7 @@ static int do_scsi_scan_one(struct udevice *dev, int id,
int lun, bool verbose)
struct udevice *bdev;
struct blk_desc bd;
struct blk_desc *bdesc;
- char str[10], *name;
+ char str[10];
/*
* detect the scsi driver to get information about its geometry (block
@@ -600,10 +600,7 @@ static int do_scsi_scan_one(struct udevice *dev, int id,
int lun, bool verbose)
* block devices created
*/
snprintf(str, sizeof(str), "id%dlun%d", id, lun);
- name = strdup(str);
- if (!name)
- return log_msg_ret("nam", -ENOMEM);
- ret = blk_create_devicef(dev, "scsi_blk", name, UCLASS_SCSI, -1,
+ ret = blk_create_devicef(dev, "scsi_blk", str, UCLASS_SCSI, -1,
name is only used in a print statement and not passed on:
snprintf(dev_name, sizeof(dev_name), "%s.%s", parent->name, name);
Reviewed-by: Heinrich Schuchardt <[email protected]>
bd.blksz, bd.lba, &bdev);
if (ret) {
debug("Can't create device\n");