cfq-iosched: fix RCU problem in cfq_cic_lookup()
Jens Axboe authored
cfq_cic_lookup() needs to properly protect ioc->ioc_data before
dereferencing it and also exclude updaters of ioc->ioc_data as well.

Also add a number of comments documenting why the existing RCU usage
is OK.

Thanks a lot to "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> for
review and comments!
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
d6de8be7
Name Last commit Last update
..
Kconfig Kconfig: clean up block/Kconfig help descriptions
Kconfig.iosched update I/O sched Kconfig help texts - CFQ is now default, not AS.
Makefile block: ll_rw_blk.c split, add blk-merge.c
as-iosched.c block: kill swap_io_context()
blk-barrier.c block: remove remaining __FUNCTION__ occurrences
blk-core.c block: Move the second call to get_request to the end of the loop
blk-exec.c block: make core bits checkpatch compliant
blk-ioc.c cfq-iosched: fix RCU race in the cfq io_context destructor handling
blk-map.c block: add dma alignment and padding support to blk_rq_map_kern
blk-merge.c block: get rid of likely/unlikely predictions in merge logic
blk-settings.c Remove blkdev warning triggered by using md
blk-sysfs.c block: sysfs store function needs to grab queue_lock and use queue_flag_*()
blk-tag.c block: adjust tagging function queue bit locking
blk.h block: rename and export rq_init()
blktrace.c block: make blktrace use per-cpu buffers for message notes
bsg.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
cfq-iosched.c cfq-iosched: fix RCU problem in cfq_cic_lookup()
compat_ioctl.c Fix misuses of bdevname()
deadline-iosched.c block: let elv_register() return void
elevator.c Added in elevator switch message to blktrace stream
genhd.c block: do_mounts - accept root=<non-existant partition>
ioctl.c compat_ioctl: move common block ioctls to compat_blkdev_ioctl
noop-iosched.c block: let elv_register() return void
scsi_ioctl.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6