diff options
Diffstat (limited to 'drivers/scsi/scsi_scan.c')
| -rw-r--r-- | drivers/scsi/scsi_scan.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index c44783801402..47291bcff0d5 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
| @@ -317,6 +317,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, | |||
| 317 | out_device_destroy: | 317 | out_device_destroy: |
| 318 | scsi_device_set_state(sdev, SDEV_DEL); | 318 | scsi_device_set_state(sdev, SDEV_DEL); |
| 319 | transport_destroy_device(&sdev->sdev_gendev); | 319 | transport_destroy_device(&sdev->sdev_gendev); |
| 320 | put_device(&sdev->sdev_dev); | ||
| 320 | put_device(&sdev->sdev_gendev); | 321 | put_device(&sdev->sdev_gendev); |
| 321 | out: | 322 | out: |
| 322 | if (display_failure_msg) | 323 | if (display_failure_msg) |
| @@ -951,15 +952,6 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result, | |||
| 951 | return SCSI_SCAN_LUN_PRESENT; | 952 | return SCSI_SCAN_LUN_PRESENT; |
| 952 | } | 953 | } |
| 953 | 954 | ||
| 954 | static inline void scsi_destroy_sdev(struct scsi_device *sdev) | ||
| 955 | { | ||
| 956 | scsi_device_set_state(sdev, SDEV_DEL); | ||
| 957 | if (sdev->host->hostt->slave_destroy) | ||
| 958 | sdev->host->hostt->slave_destroy(sdev); | ||
| 959 | transport_destroy_device(&sdev->sdev_gendev); | ||
| 960 | put_device(&sdev->sdev_gendev); | ||
| 961 | } | ||
| 962 | |||
| 963 | #ifdef CONFIG_SCSI_LOGGING | 955 | #ifdef CONFIG_SCSI_LOGGING |
| 964 | /** | 956 | /** |
| 965 | * scsi_inq_str - print INQUIRY data from min to max index, strip trailing whitespace | 957 | * scsi_inq_str - print INQUIRY data from min to max index, strip trailing whitespace |
| @@ -1137,7 +1129,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget, | |||
| 1137 | } | 1129 | } |
| 1138 | } | 1130 | } |
| 1139 | } else | 1131 | } else |
| 1140 | scsi_destroy_sdev(sdev); | 1132 | __scsi_remove_device(sdev); |
| 1141 | out: | 1133 | out: |
| 1142 | return res; | 1134 | return res; |
| 1143 | } | 1135 | } |
| @@ -1498,7 +1490,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags, | |||
| 1498 | /* | 1490 | /* |
| 1499 | * the sdev we used didn't appear in the report luns scan | 1491 | * the sdev we used didn't appear in the report luns scan |
| 1500 | */ | 1492 | */ |
| 1501 | scsi_destroy_sdev(sdev); | 1493 | __scsi_remove_device(sdev); |
| 1502 | return ret; | 1494 | return ret; |
| 1503 | } | 1495 | } |
| 1504 | 1496 | ||
| @@ -1708,7 +1700,7 @@ static void scsi_sysfs_add_devices(struct Scsi_Host *shost) | |||
| 1708 | shost_for_each_device(sdev, shost) { | 1700 | shost_for_each_device(sdev, shost) { |
| 1709 | if (!scsi_host_scan_allowed(shost) || | 1701 | if (!scsi_host_scan_allowed(shost) || |
| 1710 | scsi_sysfs_add_sdev(sdev) != 0) | 1702 | scsi_sysfs_add_sdev(sdev) != 0) |
| 1711 | scsi_destroy_sdev(sdev); | 1703 | __scsi_remove_device(sdev); |
| 1712 | } | 1704 | } |
| 1713 | } | 1705 | } |
| 1714 | 1706 | ||
| @@ -1941,7 +1933,7 @@ void scsi_free_host_dev(struct scsi_device *sdev) | |||
| 1941 | { | 1933 | { |
| 1942 | BUG_ON(sdev->id != sdev->host->this_id); | 1934 | BUG_ON(sdev->id != sdev->host->this_id); |
| 1943 | 1935 | ||
| 1944 | scsi_destroy_sdev(sdev); | 1936 | __scsi_remove_device(sdev); |
| 1945 | } | 1937 | } |
| 1946 | EXPORT_SYMBOL(scsi_free_host_dev); | 1938 | EXPORT_SYMBOL(scsi_free_host_dev); |
| 1947 | 1939 | ||
