diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-03-14 13:13:25 +0000 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-03-14 13:13:25 +0000 |
| commit | 7d9aca39dcacd2b3f42e2e287162329f410f93e1 (patch) | |
| tree | 2907b680b2b7625226f46d23d74ccc9c58ad0362 /drivers/block/floppy.c | |
| parent | e1c1c69c8fc7656c33460c8e085ac0d0be22ac3b (diff) | |
| parent | a0cc0209abb9fe2b9ab71aa41be70eddd0cbdd61 (diff) | |
| download | linux-next-7d9aca39dcacd2b3f42e2e287162329f410f93e1.tar.gz linux-next-7d9aca39dcacd2b3f42e2e287162329f410f93e1.zip | |
Merge remote-tracking branch 'regmap/topic/drivers' into regmap-next
Resolved simple add/add conflicts:
drivers/base/regmap/internal.h
drivers/base/regmap/regmap.c
Diffstat (limited to 'drivers/block/floppy.c')
| -rw-r--r-- | drivers/block/floppy.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 510fb10ec45a..9baf11e86362 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -4368,8 +4368,14 @@ out_unreg_blkdev: out_put_disk: while (dr--) { del_timer_sync(&motor_off_timer[dr]); - if (disks[dr]->queue) + if (disks[dr]->queue) { blk_cleanup_queue(disks[dr]->queue); + /* + * put_disk() is not paired with add_disk() and + * will put queue reference one extra time. fix it. + */ + disks[dr]->queue = NULL; + } put_disk(disks[dr]); } return err; @@ -4579,6 +4585,15 @@ static void __exit floppy_module_exit(void) platform_device_unregister(&floppy_device[drive]); } blk_cleanup_queue(disks[drive]->queue); + + /* + * These disks have not called add_disk(). Don't put down + * queue reference in put_disk(). + */ + if (!(allowed_drive_mask & (1 << drive)) || + fdc_state[FDC(drive)].version == FDC_NONE) + disks[drive]->queue = NULL; + put_disk(disks[drive]); } |
