diff options
-rw-r--r-- | drivers/ieee1394/sbp2.c | 8 | ||||
-rw-r--r-- | drivers/scsi/scsi_scan.c | 13 | ||||
-rw-r--r-- | include/scsi/scsi_device.h | 4 |
3 files changed, 19 insertions, 6 deletions
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c index 627af507643..de88218ef7c 100644 --- a/drivers/ieee1394/sbp2.c +++ b/drivers/ieee1394/sbp2.c @@ -790,7 +790,7 @@ static void sbp2_host_reset(struct hpsb_host *host) static int sbp2_start_device(struct scsi_id_instance_data *scsi_id) { struct sbp2scsi_host_info *hi = scsi_id->hi; - struct scsi_device *sdev; + int error; SBP2_DEBUG("sbp2_start_device"); @@ -939,10 +939,10 @@ alloc_fail: sbp2_max_speed_and_size(scsi_id); /* Add this device to the scsi layer now */ - sdev = scsi_add_device(scsi_id->scsi_host, 0, scsi_id->ud->id, 0); - if (IS_ERR(sdev)) { + error = scsi_add_device(scsi_id->scsi_host, 0, scsi_id->ud->id, 0); + if (error) { SBP2_ERR("scsi_add_device failed"); - return PTR_ERR(sdev); + return error; } return 0; diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index a0975c78b96..b86f170fa8e 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -1264,6 +1264,19 @@ struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel, } EXPORT_SYMBOL(__scsi_add_device); +int scsi_add_device(struct Scsi_Host *host, uint channel, + uint target, uint lun) +{ + struct scsi_device *sdev = + __scsi_add_device(host, channel, target, lun, NULL); + if (IS_ERR(sdev)) + return PTR_ERR(sdev); + + scsi_device_put(sdev); + return 0; +} +EXPORT_SYMBOL(scsi_add_device); + void scsi_rescan_device(struct device *dev) { struct scsi_driver *drv; diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index da63722c012..c0e4c67d836 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -178,8 +178,8 @@ static inline struct scsi_target *scsi_target(struct scsi_device *sdev) extern struct scsi_device *__scsi_add_device(struct Scsi_Host *, uint, uint, uint, void *hostdata); -#define scsi_add_device(host, channel, target, lun) \ - __scsi_add_device(host, channel, target, lun, NULL) +extern int scsi_add_device(struct Scsi_Host *host, uint channel, + uint target, uint lun); extern void scsi_remove_device(struct scsi_device *); extern int scsi_device_cancel(struct scsi_device *, int); |