OpenCloudOS-Kernel/block
Jens Axboe c26156b253 block: hold extra reference to bio in blk_rq_map_user_iov()
If the size passed in is OK but we end up mapping too many segments,
we call the unmap path directly like from IO completion. But from IO
completion we have an extra reference to the bio, so this error case
goes OOPS when it attempts to free and already free bio.

Fix it by getting an extra reference to the bio before calling the
unmap failure case.

Reported-by: Petr Vandrovec <vandrove@vc.cvut.cz>

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
2008-11-18 15:08:56 +01:00
..
Kconfig block: Block layer data integrity support 2008-07-03 13:21:13 +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: unify request timeout handling 2008-10-09 08:56:13 +02:00
as-iosched.c block: as/cfq ssd idle check update 2008-10-09 08:56:19 +02:00
blk-barrier.c block: adjust blkdev_issue_discard for swap 2008-10-09 08:56:17 +02:00
blk-core.c blk: move blk_delete_timer call in end_that_request_last 2008-11-06 08:41:56 +01:00
blk-exec.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-integrity.c block: Switch blk_integrity_compare from bdev to gendisk 2008-10-09 08:56:21 +02: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: hold extra reference to bio in blk_rq_map_user_iov() 2008-11-18 15:08:56 +01:00
blk-merge.c block: remove unused ll_new_mergeable() 2008-11-06 08:41:55 +01:00
blk-settings.c block: move q->unplug_work initialization 2008-10-17 08:46:57 +02:00
blk-softirq.c block: add fault injection mechanism for faking request timeouts 2008-10-09 08:56:17 +02:00
blk-sysfs.c block: add support for IO CPU affinity 2008-10-09 08:56:09 +02:00
blk-tag.c block: reserve some tags just for sync IO 2008-10-09 08:56:19 +02:00
blk-timeout.c Block: use round_jiffies_up() 2008-11-06 08:42:49 +01:00
blk.h block: remove __generic_unplug_device() from exports 2008-10-17 14:03:08 +02:00
blktrace.c blktrace: use BLKTRACE_BDEV_SIZE as the name size for setup structure 2008-10-09 08:56:20 +02:00
bsg.c [PATCH] switch scsi_cmd_ioctl() to passing fmode_t 2008-10-21 07:47:14 -04:00
cfq-iosched.c block: as/cfq ssd idle check update 2008-10-09 08:56:19 +02:00
cmd-filter.c [PATCH] introduce fmode_t, do annotations 2008-10-21 07:47:06 -04:00
compat_ioctl.c compat_blkdev_driver_ioctl: Remove unused variable warning 2008-10-23 10:28:25 -07:00
deadline-iosched.c deadline-iosched: non-functional fixes 2008-10-09 08:56:03 +02:00
elevator.c block: add timer on blkdev_dequeue_request() not elv_next_request() 2008-11-06 08:41:55 +01:00
genhd.c block: fix boot failure with CONFIG_DEBUG_BLOCK_EXT_DEVT=y and nash 2008-11-18 15:08:56 +01:00
ioctl.c block: make add_partition() return pointer to hd_struct 2008-11-18 15:08:56 +01:00
noop-iosched.c block: let elv_register() return void 2007-12-18 08:29:28 +01:00
scsi_ioctl.c [PATCH] switch scsi_cmd_ioctl() to passing fmode_t 2008-10-21 07:47:14 -04:00