Commit 4ce7ada4 authored by Junxiao Bi's avatar Junxiao Bi Committed by Martin K. Petersen
Browse files

scsi: core: Fix error handling for scsi_alloc_sdev()



After scsi_sysfs_device_initialize() was called, error paths must call
__scsi_remove_device().

Fixes: 1ac22c8e ("scsi: core: Fix refcount leak for tagset_refcnt")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: default avatarJohn Garry <john.g.garry@oracle.com>
Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20260304164603.51528-1-junxiao.bi@oracle.com


Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 14d4ac19
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -360,12 +360,8 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
	 * default device queue depth to figure out sbitmap shift
	 * since we use this queue depth most of times.
	 */
	if (scsi_realloc_sdev_budget_map(sdev, depth)) {
		kref_put(&sdev->host->tagset_refcnt, scsi_mq_free_tags);
		put_device(&starget->dev);
		kfree(sdev);
		goto out;
	}
	if (scsi_realloc_sdev_budget_map(sdev, depth))
		goto out_device_destroy;

	scsi_change_queue_depth(sdev, depth);