scsi: Fix the name string memory leak during scsi scan

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 <bmeng.cn@gmail.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Bin Meng 2025-11-05 19:07:24 +08:00 committed by Tom Rini
parent 749ec88604
commit c6e8befd4b

View File

@ -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,
bd.blksz, bd.lba, &bdev);
if (ret) {
debug("Can't create device\n");