scsi: Fix the name string memory leak during scsi scan
authorBin Meng <bmeng.cn@gmail.com>
Wed, 5 Nov 2025 11:07:24 +0000 (19:07 +0800)
committerTom Rini <trini@konsulko.com>
Tue, 11 Nov 2025 17:54:48 +0000 (11:54 -0600)
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>
drivers/scsi/scsi.c

index 0560839..b414d02 100644 (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");