lkml.org 
[lkml]   [2015]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 43/65] scsi: storvsc: Fix a bug in copy_from_bounce_buffer()
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

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

    From: "K. Y. Srinivasan" <kys@microsoft.com>

    commit 8de580742fee8bc34d116f57a20b22b9a5f08403 upstream.

    We may exit this function without properly freeing up the maapings
    we may have acquired. Fix the bug.

    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/scsi/storvsc_drv.c | 15 ++++++++-------
    1 file changed, 8 insertions(+), 7 deletions(-)

    --- a/drivers/scsi/storvsc_drv.c
    +++ b/drivers/scsi/storvsc_drv.c
    @@ -631,21 +631,22 @@ static unsigned int copy_to_bounce_buffe
    if (bounce_sgl[j].length == PAGE_SIZE) {
    /* full..move to next entry */
    sg_kunmap_atomic(bounce_addr);
    + bounce_addr = 0;
    j++;
    + }

    - /* if we need to use another bounce buffer */
    - if (srclen || i != orig_sgl_count - 1)
    - bounce_addr = sg_kmap_atomic(bounce_sgl,j);
    + /* if we need to use another bounce buffer */
    + if (srclen && bounce_addr == 0)
    + bounce_addr = sg_kmap_atomic(bounce_sgl, j);

    - } else if (srclen == 0 && i == orig_sgl_count - 1) {
    - /* unmap the last bounce that is < PAGE_SIZE */
    - sg_kunmap_atomic(bounce_addr);
    - }
    }

    sg_kunmap_atomic(src_addr - orig_sgl[i].offset);
    }

    + if (bounce_addr)
    + sg_kunmap_atomic(bounce_addr);
    +
    local_irq_restore(flags);

    return total_copied;



    \
     
     \ /
      Last update: 2015-05-02 22:21    [W:5.907 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site