diff options
Diffstat (limited to 'drivers/scsi/ide-scsi.c')
-rw-r--r-- | drivers/scsi/ide-scsi.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 538552495d48..318ef382448f 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c | |||
@@ -101,8 +101,13 @@ static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk) | |||
101 | 101 | ||
102 | mutex_lock(&idescsi_ref_mutex); | 102 | mutex_lock(&idescsi_ref_mutex); |
103 | scsi = ide_scsi_g(disk); | 103 | scsi = ide_scsi_g(disk); |
104 | if (scsi) | 104 | if (scsi) { |
105 | scsi_host_get(scsi->host); | 105 | scsi_host_get(scsi->host); |
106 | if (ide_device_get(scsi->drive)) { | ||
107 | scsi_host_put(scsi->host); | ||
108 | scsi = NULL; | ||
109 | } | ||
110 | } | ||
106 | mutex_unlock(&idescsi_ref_mutex); | 111 | mutex_unlock(&idescsi_ref_mutex); |
107 | return scsi; | 112 | return scsi; |
108 | } | 113 | } |
@@ -110,6 +115,7 @@ static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk) | |||
110 | static void ide_scsi_put(struct ide_scsi_obj *scsi) | 115 | static void ide_scsi_put(struct ide_scsi_obj *scsi) |
111 | { | 116 | { |
112 | mutex_lock(&idescsi_ref_mutex); | 117 | mutex_lock(&idescsi_ref_mutex); |
118 | ide_device_put(scsi->drive); | ||
113 | scsi_host_put(scsi->host); | 119 | scsi_host_put(scsi->host); |
114 | mutex_unlock(&idescsi_ref_mutex); | 120 | mutex_unlock(&idescsi_ref_mutex); |
115 | } | 121 | } |