Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

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: Christoph Hellwig <hch@lst.de>
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Luis Chamberlain and committed by
Martin K. Petersen
e9d658c2 2a7a891f

+6 -1
+6 -1
drivers/scsi/sr.c
··· 727 727 dev_set_drvdata(dev, cd); 728 728 disk->flags |= GENHD_FL_REMOVABLE; 729 729 sr_revalidate_disk(cd); 730 - device_add_disk(&sdev->sdev_gendev, disk, NULL); 730 + 731 + error = device_add_disk(&sdev->sdev_gendev, disk, NULL); 732 + if (error) { 733 + kref_put(&cd->kref, sr_kref_release); 734 + goto fail; 735 + } 731 736 732 737 sdev_printk(KERN_DEBUG, sdev, 733 738 "Attached scsi CD-ROM %s\n", cd->cdi.name);