• Johannes Stezenbach's avatar
    rt2x00: fix hang when unplugging USB device in use · d7bb5f84
    Johannes Stezenbach authored
    When an rt2x00 USB device is unplugged while in use, it reliably
    hangs the whole system.  After some time the watchdog prints:
    
    BUG: soft lockup - CPU#0 stuck for 64s! [kworker/u:0:5]
    ...
    [<c01a88d8>] (usb_submit_urb+0x0/0x2ac) from [<bf0e752c>] (rt2x00usb_kick_rx_entry+0xb4/0xe8 [rt2x00usb])
    [<bf0e7478>] (rt2x00usb_kick_rx_entry+0x0/0xe8 [rt2x00usb]) from [<bf0e7588>] (rt2x00usb_clear_entry+x28/0x2c [rt2x00usb])
    [<bf0e7560>] (rt2x00usb_clear_entry+0x0/0x2c [rt2x00usb]) from [<bf0d5bc4>] (rt2x00lib_rxdone+0x2e0/0x2f8 [rt2x00lib])
    [<bf0d58e4>] (rt2x00lib_rxdone+0x0/0x2f8 [rt2x00lib]) from [<bf0e7e00>] (rt2x00usb_work_rxdone+0x54/0x74 [rt2x00usb])
    [<bf0e7dac>] (rt2x00usb_work_rxdone+0x0/0x74 [rt2x00usb]) from [<c00542b4>] (process_one_work+0x20c/0x35c)
    
    Clear the DEVICE_STATE_PRESENT flag when usb_submit_urb()
    returns -ENODEV to fix this.
    Signed-off-by: default avatarJohannes Stezenbach <js@sig21.net>
    Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    d7bb5f84
rt2x00usb.c 19.7 KB