lkml.org 
[lkml]   [2018]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.9 36/38] net/usb: cancel pending work when unbinding smsc75xx
    Date
    From: Yu Zhao <yuzhao@google.com>

    [ Upstream commit f7b2a56e1f3dcbdb4cf09b2b63e859ffe0e09df8 ]

    Cancel pending work before freeing smsc75xx private data structure
    during binding. This fixes the following crash in the driver:

    BUG: unable to handle kernel NULL pointer dereference at 0000000000000050
    IP: mutex_lock+0x2b/0x3f
    <snipped>
    Workqueue: events smsc75xx_deferred_multicast_write [smsc75xx]
    task: ffff8caa83e85700 task.stack: ffff948b80518000
    RIP: 0010:mutex_lock+0x2b/0x3f
    <snipped>
    Call Trace:
    smsc75xx_deferred_multicast_write+0x40/0x1af [smsc75xx]
    process_one_work+0x18d/0x2fc
    worker_thread+0x1a2/0x269
    ? pr_cont_work+0x58/0x58
    kthread+0xfa/0x10a
    ? pr_cont_work+0x58/0x58
    ? rcu_read_unlock_sched_notrace+0x48/0x48
    ret_from_fork+0x22/0x40

    Signed-off-by: Yu Zhao <yuzhao@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/usb/smsc75xx.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c
    index f7aacd73b5a8..977d9c772554 100644
    --- a/drivers/net/usb/smsc75xx.c
    +++ b/drivers/net/usb/smsc75xx.c
    @@ -1521,6 +1521,7 @@ static void smsc75xx_unbind(struct usbnet *dev, struct usb_interface *intf)
    {
    struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
    if (pdata) {
    + cancel_work_sync(&pdata->set_multicast);
    netif_dbg(dev, ifdown, dev->net, "free pdata\n");
    kfree(pdata);
    pdata = NULL;
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-10-16 06:20    [W:2.705 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site