diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index b63262d7abcfb16a41ba1e067c48b22dd3d6030c..1025f659310c8b24d67cd5f2236a4c746f46a66b 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3492,7 +3492,13 @@ static int sd_probe(struct device *dev) pm_runtime_set_autosuspend_delay(dev, sdp->host->hostt->rpm_autosuspend_delay); } - device_add_disk(dev, gd, NULL); + + error = device_add_disk_safe(dev, gd, NULL); + if (error) { + device_unregister(&sdkp->dev); + goto out; + } + blk_delete_region(disk_devt(sdkp->disk), SD_MINORS, sd_default_probe); if (sdkp->capacity) sd_dif_config_host(sdkp);