Commit d4bb600c authored by Luis Chamberlain's avatar Luis Chamberlain Committed by Li Nan
Browse files

scsi: sr: Add error handling support for add_disk()

mainline inclusion
from mainline-v5.16-rc1
commit e9d658c2
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I81XCK

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e9d658c2175b95a8f091b12ddefb271683aeacd9

----------------------------------------

We never checked for errors on add_disk() as this function returned
void. Now that this is fixed, use the shiny new error handling.

Just put the cdrom kref and have the unwinding be done by
sr_kref_release().

Link: https://lore.kernel.org/r/20211015233028.2167651-3-mcgrof@kernel.org


Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarZhong Jinghua <zhongjinghua@huawei.com>
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
parent e60a726b
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -793,7 +793,12 @@ static int sr_probe(struct device *dev)
	dev_set_drvdata(dev, cd);
	disk->flags |= GENHD_FL_REMOVABLE;
	sr_revalidate_disk(cd);
	device_add_disk(&sdev->sdev_gendev, disk, NULL);

	error = device_add_disk_safe(&sdev->sdev_gendev, disk, NULL);
	if (error) {
		kref_put(&cd->kref, sr_kref_release);
		goto fail;
	}

	sdev_printk(KERN_DEBUG, sdev,
		    "Attached scsi CD-ROM %s\n", cd->cdi.name);