linux-sg2042/block
James Bottomley 8df5fc042c [SCSI] bsg: fix oops on remove
If you do a modremove of any sas driver, you run into an oops on
shutdown when the host is removed (coming from the host bsg device).
The root cause seems to be that there's a use after free of the
bsg_class_device:  In bsg_kref_release_function, this is used (to do a
put_device(bcg->parent) after bcg->release has been called.  In sas (and
possibly many other things) bcd->release frees the queue which contains
the bsg_class_device, so we get a put_device on unreferenced memory.
Fix this by taking a copy of the pointer to the parent before releasing
bsg.

Acked-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
2008-07-12 10:14:56 -05:00
..
Kconfig Kconfig: clean up block/Kconfig help descriptions 2008-04-21 09:51:04 +02:00
Kconfig.iosched update I/O sched Kconfig help texts - CFQ is now default, not AS. 2007-02-17 20:08:22 +01:00
Makefile block: ll_rw_blk.c split, add blk-merge.c 2008-01-29 21:55:12 +01:00
as-iosched.c block: Fix the starving writes bug in the anticipatory IO scheduler 2008-07-01 09:06:42 +02:00
blk-barrier.c block: remove remaining __FUNCTION__ occurrences 2008-05-01 08:04:02 -07:00
blk-core.c block: Move the second call to get_request to the end of the loop 2008-05-28 14:49:27 +02:00
blk-exec.c block: make core bits checkpatch compliant 2008-02-01 09:26:33 +01:00
blk-ioc.c cfq-iosched: fix RCU race in the cfq io_context destructor handling 2008-05-07 09:28:57 +02:00
blk-map.c block: add dma alignment and padding support to blk_rq_map_kern 2008-04-29 09:50:34 +02:00
blk-merge.c block: get rid of likely/unlikely predictions in merge logic 2008-05-07 09:33:55 +02:00
blk-settings.c Remove blkdev warning triggered by using md 2008-05-14 19:11:15 -07:00
blk-sysfs.c block: sysfs store function needs to grab queue_lock and use queue_flag_*() 2008-05-07 09:09:39 +02:00
blk-tag.c block: adjust tagging function queue bit locking 2008-05-07 09:27:43 +02:00
blk.h block: rename and export rq_init() 2008-04-29 14:48:55 +02:00
blktrace.c block: disable IRQs until data is written to relay channel 2008-06-12 11:20:57 -07:00
bsg.c [SCSI] bsg: fix oops on remove 2008-07-12 10:14:56 -05:00
cfq-iosched.c cfq-iosched: fix RCU problem in cfq_cic_lookup() 2008-05-28 14:49:28 +02:00
compat_ioctl.c Fix misuses of bdevname() 2008-05-13 08:02:26 -07:00
deadline-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
elevator.c Added in elevator switch message to blktrace stream 2008-05-28 14:49:27 +02:00
genhd.c Fix invalid access errors in blk_lookup_devt 2008-06-09 10:06:24 -07:00
ioctl.c compat_ioctl: move common block ioctls to compat_blkdev_ioctl 2007-10-10 09:26:00 +02:00
noop-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
scsi_ioctl.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-05-02 13:52:35 -07:00