On 14.06.22 10:50, Lukas Wunner wrote: > @@ -758,6 +758,8 @@ static void sierra_net_unbind(struct usbnet *dev, struct usb_interface *intf) > > dev_dbg(&dev->udev->dev, "%s", __func__); > > + usbnet_status_stop(dev); > + > /* kill the timer and work */ > del_timer_sync(&priv->sync_timer); > cancel_work_sync(&priv->sierra_net_kevent); Hi, as far as I can see the following race condition exists: CPU A: intr_complete() -> static void sierra_net_status() -> defer_kevent() CPU B: usbnet_stop_status() ---- kills the URB but only the URB, kevent scheduled CPU A: sierra_net_kevent -> sierra_net_dosync() -> CPU B: -> del_timer_sync(&priv->sync_timer); ---- NOP, too early CPU A: add_timer(&priv->sync_timer); CPU B: cancel_work_sync(&priv->sierra_net_kevent); ---- NOP, too late Regards Oliver