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 c4478380140..47291bcff0d 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,  out_device_destroy:  	scsi_device_set_state(sdev, SDEV_DEL);  	transport_destroy_device(&sdev->sdev_gendev); +	put_device(&sdev->sdev_dev);  	put_device(&sdev->sdev_gendev);  out:  	if (display_failure_msg) @@ -951,15 +952,6 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,  	return SCSI_SCAN_LUN_PRESENT;  } -static inline void scsi_destroy_sdev(struct scsi_device *sdev) -{ -	scsi_device_set_state(sdev, SDEV_DEL); -	if (sdev->host->hostt->slave_destroy) -		sdev->host->hostt->slave_destroy(sdev); -	transport_destroy_device(&sdev->sdev_gendev); -	put_device(&sdev->sdev_gendev); -} -  #ifdef CONFIG_SCSI_LOGGING  /**    * 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,  			}  		}  	} else -		scsi_destroy_sdev(sdev); +		__scsi_remove_device(sdev);   out:  	return res;  } @@ -1498,7 +1490,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,  		/*  		 * the sdev we used didn't appear in the report luns scan  		 */ -		scsi_destroy_sdev(sdev); +		__scsi_remove_device(sdev);  	return ret;  } @@ -1708,7 +1700,7 @@ static void scsi_sysfs_add_devices(struct Scsi_Host *shost)  	shost_for_each_device(sdev, shost) {  		if (!scsi_host_scan_allowed(shost) ||  		    scsi_sysfs_add_sdev(sdev) != 0) -			scsi_destroy_sdev(sdev); +			__scsi_remove_device(sdev);  	}  } @@ -1941,7 +1933,7 @@ void scsi_free_host_dev(struct scsi_device *sdev)  {  	BUG_ON(sdev->id != sdev->host->this_id); -	scsi_destroy_sdev(sdev); +	__scsi_remove_device(sdev);  }  EXPORT_SYMBOL(scsi_free_host_dev);  |