[PATCH] scsi: Fix the name string memory leak during scsi scan

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Wed Nov 5 13:12:45 CET 2025


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 <bmeng.cn at gmail.com>
> ---
> 
>   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 <heinrich.schuchardt at canonical.com>


>   				 bd.blksz, bd.lba, &bdev);
>   	if (ret) {
>   		debug("Can't create device\n");



More information about the U-Boot mailing list