locks: allow lockd to process blocked locks during grace period
[safe/jmp/linux-2.6] / block / blk-map.c
index 0b1af5a..af37e4a 100644 (file)
@@ -210,6 +210,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
        if (!bio_flagged(bio, BIO_USER_MAPPED))
                rq->cmd_flags |= REQ_COPY_USER;
 
+       blk_queue_bounce(q, &bio);
        bio_get(bio);
        blk_rq_bio_prep(q, rq, bio);
        rq->buffer = rq->data = NULL;
@@ -276,7 +277,8 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
 
        kaddr = (unsigned long)kbuf;
        alignment = queue_dma_alignment(q) | q->dma_pad_mask;
-       do_copy = ((kaddr & alignment) || (len & alignment));
+       do_copy = ((kaddr & alignment) || (len & alignment) ||
+                  object_is_on_stack(kbuf));
 
        if (do_copy)
                bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);