lkml.org 
[lkml]   [2020]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 031/266] usblp: poison URBs upon disconnect
    Date
    From: Oliver Neukum <oneukum@suse.com>

    [ Upstream commit 296a193b06120aa6ae7cf5c0d7b5e5b55968026e ]

    syzkaller reported an URB that should have been killed to be active.
    We do not understand it, but this should fix the issue if it is real.

    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+be5b5f86a162a6c281e6@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20200507085806.5793-1-oneukum@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/usb/class/usblp.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
    index 0d8e3f3804a3..084c48c5848f 100644
    --- a/drivers/usb/class/usblp.c
    +++ b/drivers/usb/class/usblp.c
    @@ -468,7 +468,8 @@ static int usblp_release(struct inode *inode, struct file *file)
    usb_autopm_put_interface(usblp->intf);

    if (!usblp->present) /* finish cleanup from disconnect */
    - usblp_cleanup(usblp);
    + usblp_cleanup(usblp); /* any URBs must be dead */
    +
    mutex_unlock(&usblp_mutex);
    return 0;
    }
    @@ -1375,9 +1376,11 @@ static void usblp_disconnect(struct usb_interface *intf)

    usblp_unlink_urbs(usblp);
    mutex_unlock(&usblp->mut);
    + usb_poison_anchored_urbs(&usblp->urbs);

    if (!usblp->used)
    usblp_cleanup(usblp);
    +
    mutex_unlock(&usblp_mutex);
    }

    --
    2.25.1
    \
     
     \ /
      Last update: 2020-06-18 03:21    [W:4.035 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site