linux/block
Hannes Reinecke c2b387f029 block: Free queue resources at blk_release_queue()
commit 777eb1bf15 upstream.

A kernel crash is observed when a mounted ext3/ext4 filesystem is
physically removed. The problem is that blk_cleanup_queue() frees up
some resources eg by calling elevator_exit(), which are not checked for
in normal operation. So we should rather move these calls to the
destructor function blk_release_queue() as at that point all remaining
references are gone. However, in doing so we have to ensure that any
externally supplied queue_lock is disconnected as the driver might free
up the lock after the call of blk_cleanup_queue(),

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-10-03 11:41:13 -07:00
..
blk-cgroup.c blk-cgroup: be able to remove the record of unplugged device 2011-10-03 11:40:42 -07:00
blk-cgroup.h cfq-iosched: Make IO merge related stats per cpu 2011-05-23 10:02:19 +02:00
blk-core.c block: Free queue resources at blk_release_queue() 2011-10-03 11:41:13 -07:00
blk-exec.c fix crash in scsi_dispatch_cmd() 2011-08-04 21:58:36 -07:00
blk-flush.c block: hold queue if flush is running for non-queueable flush drive 2011-05-06 11:36:25 -06:00
blk-integrity.c dm: improve block integrity support 2011-04-05 23:52:43 +02:00
blk-ioc.c block: Use hlist_entry() for io_context.cic_list.first 2011-06-02 13:05:02 +02:00
blk-iopoll.c
blk-lib.c blkdev: Do not return -EOPNOTSUPP if discard is supported 2011-05-06 19:30:01 -06:00
blk-map.c
blk-merge.c block: attempt to merge with existing requests on plug flush 2011-03-21 10:14:27 +01:00
blk-settings.c block: Fix discard topology stacking and reporting 2011-05-18 10:37:35 +02:00
blk-softirq.c
blk-sysfs.c block: Free queue resources at blk_release_queue() 2011-10-03 11:41:13 -07:00
blk-tag.c
blk-throttle.c block: Add __attribute__((format(printf...) and fix fallout 2011-06-13 10:42:49 +02:00
blk-timeout.c
blk.h Merge branch 'for-linus' into for-2.6.40/core 2011-05-20 20:36:16 +02:00
bsg.c
cfq-iosched.c cfq-iosched: make code consistent 2011-06-27 09:36:06 +02:00
cfq.h blk-cgroup: Add unaccounted time to timeslice_used. 2011-03-12 16:54:00 +01:00
compat_ioctl.c
deadline-iosched.c block: remove per-queue plugging 2011-03-10 08:52:07 +01:00
elevator.c block: get rid of on-stack plugging debug checks 2011-05-20 20:52:16 +02:00
genhd.c block: make disk_block_events() properly wait for work cancellation 2011-06-09 20:43:59 +02:00
ioctl.c block: fix refcounting in BLKBSZSET 2011-02-24 08:54:21 -08:00
Kconfig
Kconfig.iosched
Makefile
noop-iosched.c block: remove per-queue plugging 2011-03-10 08:52:07 +01:00
scsi_ioctl.c