lkml.org 
[lkml]   [2012]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[ 031/149] USB: ums_realtek: do not use stack memory for DMA in __do_config_autodelink
    3.2-stable review patch.  If anyone has any objections, please let me know.

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

    From: Josh Boyer <jwboyer@redhat.com>

    commit 4898e07174b79013afd2b422ef6c4336ef8e6783 upstream.

    __do_config_autodelink passes the data variable to the transport function.
    If the calling functions pass a stack variable, this will eventually trigger
    a DMA-API debug backtrace for mapping stack memory in the DMA buffer. Fix
    this by calling kmemdup for the passed data instead.

    Signed-off-by: Josh Boyer <jwboyer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/usb/storage/realtek_cr.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    --- a/drivers/usb/storage/realtek_cr.c
    +++ b/drivers/usb/storage/realtek_cr.c
    @@ -509,9 +509,14 @@ static int __do_config_autodelink(struct
    int retval;
    u16 addr = 0xFE47;
    u8 cmnd[12] = {0};
    + u8 *buf;

    US_DEBUGP("%s, addr = 0x%x, len = %d\n", __FUNCTION__, addr, len);

    + buf = kmemdup(data, len, GFP_NOIO);
    + if (!buf)
    + return USB_STOR_TRANSPORT_ERROR;
    +
    cmnd[0] = 0xF0;
    cmnd[1] = 0x0E;
    cmnd[2] = (u8)(addr >> 8);
    @@ -519,7 +524,8 @@ static int __do_config_autodelink(struct
    cmnd[4] = (u8)(len >> 8);
    cmnd[5] = (u8)len;

    - retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, data, len, DMA_TO_DEVICE, NULL);
    + retval = rts51x_bulk_transport_special(us, 0, cmnd, 12, buf, len, DMA_TO_DEVICE, NULL);
    + kfree(buf);
    if (retval != USB_STOR_TRANSPORT_GOOD) {
    return -EIO;
    }



    \
     
     \ /
      Last update: 2012-03-31 00:33    [W:4.103 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site