summaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-floppy.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-08-15 16:16:15 +0200
committerIngo Molnar <mingo@elte.hu>2008-08-15 16:16:15 +0200
commit1a10390708d675ebf1a2f5e169a5165626afbd88 (patch)
treed9ee7d10abd65e580fb74152a501089f51174225 /drivers/ide/ide-floppy.c
parent239bd83104ec6bcba90221d8b0973d2565142ef8 (diff)
parentb635acec48bcaa9183fcbf4e3955616b0d4119b5 (diff)
downloadtalos-op-linux-1a10390708d675ebf1a2f5e169a5165626afbd88.tar.gz
talos-op-linux-1a10390708d675ebf1a2f5e169a5165626afbd88.zip
Merge branch 'linus' into x86/cpu
Diffstat (limited to 'drivers/ide/ide-floppy.c')
-rw-r--r--drivers/ide/ide-floppy.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index ca11a26746f1..e9034c0125f3 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -167,11 +167,10 @@ static struct ide_floppy_obj *ide_floppy_get(struct gendisk *disk)
mutex_lock(&idefloppy_ref_mutex);
floppy = ide_floppy_g(disk);
if (floppy) {
- kref_get(&floppy->kref);
- if (ide_device_get(floppy->drive)) {
- kref_put(&floppy->kref, idefloppy_cleanup_obj);
+ if (ide_device_get(floppy->drive))
floppy = NULL;
- }
+ else
+ kref_get(&floppy->kref);
}
mutex_unlock(&idefloppy_ref_mutex);
return floppy;
@@ -179,9 +178,11 @@ static struct ide_floppy_obj *ide_floppy_get(struct gendisk *disk)
static void ide_floppy_put(struct ide_floppy_obj *floppy)
{
+ ide_drive_t *drive = floppy->drive;
+
mutex_lock(&idefloppy_ref_mutex);
- ide_device_put(floppy->drive);
kref_put(&floppy->kref, idefloppy_cleanup_obj);
+ ide_device_put(drive);
mutex_unlock(&idefloppy_ref_mutex);
}
OpenPOWER on IntegriCloud