lkml.org 
[lkml]   [2014]   [Jul]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.11 070/198] USB: cdc-acm: fix potential urb leak and PM imbalance in write
    Date
    3.11.10.13 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Johan Hovold <jhovold@gmail.com>

    commit 183a45087d126d126e8dd1d9b2602fc129dff9ad upstream.

    Make sure to check return value of autopm get in write() in order to
    avoid urb leak and PM counter imbalance on errors.

    Fixes: 11ea859d64b6 ("USB: additional power savings for cdc-acm devices
    that support remote wakeup")

    Signed-off-by: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/usb/class/cdc-acm.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
    index 014a1aa3f950..dc5cfa5a1118 100644
    --- a/drivers/usb/class/cdc-acm.c
    +++ b/drivers/usb/class/cdc-acm.c
    @@ -654,7 +654,13 @@ static int acm_tty_write(struct tty_struct *tty,
    memcpy(wb->buf, buf, count);
    wb->len = count;

    - usb_autopm_get_interface_async(acm->control);
    + stat = usb_autopm_get_interface_async(acm->control);
    + if (stat) {
    + wb->use = 0;
    + spin_unlock_irqrestore(&acm->write_lock, flags);
    + return stat;
    + }
    +
    if (acm->susp_count) {
    usb_anchor_urb(wb->urb, &acm->delayed);
    spin_unlock_irqrestore(&acm->write_lock, flags);
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-07-03 12:41    [W:4.073 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site