scsi: sr: Add error handling support for add_disk()
authorLuis Chamberlain <mcgrof@kernel.org>
Fri, 15 Oct 2021 23:30:21 +0000 (16:30 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 19 Oct 2021 02:51:34 +0000 (22:51 -0400)
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>
drivers/scsi/sr.c

index 8b17b35283aa5ab7eb7c739bc71840430c9ea532..d769057b25a0f41680b7c8d091997542f82e72f7 100644 (file)
@@ -727,7 +727,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(&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);