aboutsummaryrefslogtreecommitdiff
path: root/block/blk-map.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-04 11:05:26 +0100
committerIngo Molnar <mingo@elte.hu>2008-12-04 11:05:26 +0100
commitc0515566f3117c44b0572559bcc3cb00899b0910 (patch)
tree3c7e36ed6e78812b9276a81d6b3a2e80788003c5 /block/blk-map.c
parent4385cecf1f5866fb33fc95e2ee26a44e9b6f6be2 (diff)
parent061e41fdb5047b1fb161e89664057835935ca1d2 (diff)
Merge commit 'v2.6.28-rc7' into x86/cleanups
Diffstat (limited to 'block/blk-map.c')
-rw-r--r--block/blk-map.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/block/blk-map.c b/block/blk-map.c
index 4849fa36161..0f4b4b88181 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -217,6 +217,12 @@ 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);
return -EINVAL;