aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2006-12-01 04:40:20 -0500
committerJens Axboe <jens.axboe@oracle.com>2006-12-01 04:40:20 -0500
commitad2d7225709b11da47e092634cbdf0591829ae9c (patch)
tree5427bbb60456d8219dcc78b2d72820a99a604b90
parentbe1c63411addba3ad750eb4fdfc50b97bc82825e (diff)
[PATCH] block: kill length alignment test in bio_map_user()
The target mode support is mapping in bios using bio_map_user. The current targets do not need their len to be aligned with a queue limit so this check is causing some problems. Note: pointers passed into the kernel are properly aligned by usersapace tgt code so the uaddr check in bio_map_user is ok. The major user, blk_bio_map_user checks for the len before mapping so it is not affected by this patch. And the semi-newly added user blk_rq_map_user_iov has been failing out when the len is not aligned properly so maybe people have been good and not sending misaligned lens or that path is not used very often and this change will not be very dangerous. st and sg do not check the length and we have not seen any problem reports from those wider used paths so this patch should be fairly safe - for mm and wider testing at least. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--fs/bio.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/bio.c b/fs/bio.c
index f95c8749499f..d91cfbf7ebc4 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -622,10 +622,9 @@ static struct bio *__bio_map_user_iov(request_queue_t *q,
622 622
623 nr_pages += end - start; 623 nr_pages += end - start;
624 /* 624 /*
625 * transfer and buffer must be aligned to at least hardsector 625 * buffer must be aligned to at least hardsector size for now
626 * size for now, in the future we can relax this restriction
627 */ 626 */
628 if ((uaddr & queue_dma_alignment(q)) || (len & queue_dma_alignment(q))) 627 if (uaddr & queue_dma_alignment(q))
629 return ERR_PTR(-EINVAL); 628 return ERR_PTR(-EINVAL);
630 } 629 }
631 630