lkml.org 
[lkml]   [2010]   [Feb]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[79/93] USB: usbfs: only copy the actual data received
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

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

    From: Greg KH <greg@kroah.com>

    commit d4a4683ca054ed9917dfc9e3ff0f7ecf74ad90d6 upstream.

    We need to only copy the data received by the device to userspace, not
    the whole kernel buffer, which can contain "stale" data.

    Thanks to Marcus Meissner for pointing this out and testing the fix.

    Reported-by: Marcus Meissner <meissner@suse.de>
    Tested-by: Marcus Meissner <meissner@suse.de>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/core/devio.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/drivers/usb/core/devio.c
    +++ b/drivers/usb/core/devio.c
    @@ -1312,9 +1312,9 @@ static int processcompl(struct async *as
    void __user *addr = as->userurb;
    unsigned int i;

    - if (as->userbuffer)
    + if (as->userbuffer && urb->actual_length)
    if (copy_to_user(as->userbuffer, urb->transfer_buffer,
    - urb->transfer_buffer_length))
    + urb->actual_length))
    goto err_out;
    if (put_user(as->status, &userurb->status))
    goto err_out;
    @@ -1435,9 +1435,9 @@ static int processcompl_compat(struct as
    void __user *addr = as->userurb;
    unsigned int i;

    - if (as->userbuffer)
    + if (as->userbuffer && urb->actual_length)
    if (copy_to_user(as->userbuffer, urb->transfer_buffer,
    - urb->transfer_buffer_length))
    + urb->actual_length))
    return -EFAULT;
    if (put_user(as->status, &userurb->status))
    return -EFAULT;



    \
     
     \ /
      Last update: 2010-02-19 18:09    [W:4.109 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site