Skip to content

Commit

Permalink
block: check for proper length of iov entries earlier in blk_rq_map_u…
Browse files Browse the repository at this point in the history
…ser_iov()

commit 9284bcf checks for proper length of iov entries in
blk_rq_map_user_iov(). But if the map is unaligned, kernel
will break out the loop without checking for the proper length.
So we need to check the proper length before the unalign check.

Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
Cc: stable@kernel.org
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
  • Loading branch information
Xiaotian Feng authored and Jens Axboe committed Nov 29, 2010
1 parent a115413 commit 5478755
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions block/blk-map.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,12 +201,13 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
for (i = 0; i < iov_count; i++) {
unsigned long uaddr = (unsigned long)iov[i].iov_base;

if (!iov[i].iov_len)
return -EINVAL;

if (uaddr & queue_dma_alignment(q)) {
unaligned = 1;
break;
}
if (!iov[i].iov_len)
return -EINVAL;
}

if (unaligned || (q->dma_pad_mask & len) || map_data)
Expand Down

0 comments on commit 5478755

Please sign in to comment.