aboutsummaryrefslogtreecommitdiff
path: root/drivers/scsi/ide-scsi.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-08-05 11:39:33 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-08-05 11:39:33 -0700
commit35ad1c8803921b28541ad28bfb18dc3b6295ba98 (patch)
tree998468e8bd42fab02d09bae8fc74bdf546608580 /drivers/scsi/ide-scsi.c
parent580da34847488b404218d1d7f53b156f245f5555 (diff)
parentf454cbe8cd38b6d447e74ddaf012017fea42717e (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: ide: ->cable_detect method cannot be marked __devinit ide: ->quirkproc method cannot be marked __devinit cs5520: add enablebits checking cdrom: don't check CDC_PLAY_AUDIO in cdrom_count_tracks() ide-cd: fix endianity for the error message in cdrom_read_capacity ide: remove CONFIG_IDE_MAX_HWIFS remove unneeded #include <linux/ide.h>'s ide: fix regression caused by ide_device_{get,put}() addition (take 2) remove unnecessary <linux/hdreg.h> includes ide: sanitize struct ide_port_ops documentation (take 2) ide: fix ide_fix_driveid() ide: fix pre-EIDE SWDMA support on big-endian
Diffstat (limited to 'drivers/scsi/ide-scsi.c')
-rw-r--r--drivers/scsi/ide-scsi.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c
index b40a673985a..461331d3dc4 100644
--- a/drivers/scsi/ide-scsi.c
+++ b/drivers/scsi/ide-scsi.c
@@ -102,11 +102,10 @@ static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk)
mutex_lock(&idescsi_ref_mutex);
scsi = ide_scsi_g(disk);
if (scsi) {
- scsi_host_get(scsi->host);
- if (ide_device_get(scsi->drive)) {
- scsi_host_put(scsi->host);
+ if (ide_device_get(scsi->drive))
scsi = NULL;
- }
+ else
+ scsi_host_get(scsi->host);
}
mutex_unlock(&idescsi_ref_mutex);
return scsi;
@@ -114,9 +113,11 @@ static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk)
static void ide_scsi_put(struct ide_scsi_obj *scsi)
{
+ ide_drive_t *drive = scsi->drive;
+
mutex_lock(&idescsi_ref_mutex);
- ide_device_put(scsi->drive);
scsi_host_put(scsi->host);
+ ide_device_put(drive);
mutex_unlock(&idescsi_ref_mutex);
}