summaryrefslogtreecommitdiff
path: root/block/blk-map.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-11-19 16:10:32 +1100
committerPaul Mackerras <paulus@samba.org>2008-11-19 16:10:32 +1100
commitcea555d384b85271035814c5adad23e6c7fc5d2a (patch)
tree1181b6333a69a135293ec75f8a48c849ee32c015 /block/blk-map.c
parent78608dd32ce46789e970d6c3c423cd668c138d6c (diff)
parent7f0f598a0069d1ab072375965a4b69137233169c (diff)
Merge branch 'linux-2.6' into next
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 4849fa36161e..0f4b4b881811 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;