From e3cc6ea1a745e7f5d326f919a428b244fa119d8f Mon Sep 17 00:00:00 2001 From: Yang Xiuwei Date: Tue, 7 Jul 2026 11:03:31 +0800 Subject: [PATCH] scsi: sd: Fix error handling in sd_probe() after large pool creation failure After device_add(&sdkp->disk_dev) succeeds, sd_large_pool_create() failure must unregister disk_dev and let scsi_disk_release() free sdkp. Going through out_free_index kfree()s an already registered device and leaks the sysfs entry. Fixes: 7179e626b76e ("scsi: sd: Enable sector size > PAGE_SIZE in SCSI sd driver") Reviewed-by: Damien Le Moal Signed-off-by: Yang Xiuwei Reviewed-by: John Garry Link: https://patch.msgid.link/20260707030333.22245-2-yangxiuwei@kylinos.cn Signed-off-by: Martin K. Petersen (Oracle) --- drivers/scsi/sd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 599e75f33334..d18693d390b2 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4089,7 +4089,9 @@ static int sd_probe(struct scsi_device *sdp) if (sdp->sector_size > PAGE_SIZE) { if (sd_large_pool_create()) { error = -ENOMEM; - goto out_free_index; + device_unregister(&sdkp->disk_dev); + put_disk(gd); + goto out; } }