diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-16 22:04:48 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-16 22:04:48 +0100 |
commit | 78f902ccc597d6ce3e8d1477d70f2d79e960ba7a (patch) | |
tree | c6ceab663de16501d1dda1c1596fe2dacaaef8e3 /block/blk-map.c | |
parent | 9ee670fd87b7d69c8633b94c42aadcbbcb96f28e (diff) | |
parent | 8b1fae4e4200388b64dd88065639413cb3f1051c (diff) | |
download | lwn-78f902ccc597d6ce3e8d1477d70f2d79e960ba7a.tar.gz lwn-78f902ccc597d6ce3e8d1477d70f2d79e960ba7a.zip |
Merge commit 'v2.6.28-rc8' into x86/doc
Diffstat (limited to 'block/blk-map.c')
-rw-r--r-- | block/blk-map.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/block/blk-map.c b/block/blk-map.c index 4849fa36161e..2990447f45e9 100644 --- a/block/blk-map.c +++ b/block/blk-map.c @@ -217,8 +217,14 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq, return PTR_ERR(bio); if (bio->bi_size != len) { + /* + * Grab an extra reference to this bio, as bio_unmap_user() + * expects to be able to drop it twice as it happens on the + * normal IO completion path + */ + bio_get(bio); bio_endio(bio, 0); - bio_unmap_user(bio); + __blk_rq_unmap_user(bio); return -EINVAL; } |