lkml.org 
[lkml]   [2011]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[050/107] block: check for proper length of iov entries earlier in blk_rq_map_user_iov()
    2.6.32-longterm review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Xiaotian Feng <dfeng@redhat.com>

    commit 5478755616ae2ef1ce144dded589b62b2a50d575 upstream.

    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>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    block/blk-map.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    --- a/block/blk-map.c
    +++ b/block/blk-map.c
    @@ -201,12 +201,13 @@ int blk_rq_map_user_iov(struct request_q
    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)



    \
     
     \ /
      Last update: 2011-11-03 02:39    [W:0.020 / U:212.196 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site