• Christian Lamparter's avatar
    ar9170: wait for asynchronous firmware loading · 160b8242
    Christian Lamparter authored
    This patch fixes a regression introduced by the following patch:
    "ar9170: load firmware asynchronously"
    
    When we kick off a firmware loading request and then unbind,
    or disconnect the usb device right away, we get into trouble:
    
    > ------------[ cut here ]------------
    > WARNING: at lib/kref.c:44 kref_get+0x1c/0x20()
    > Hardware name: 18666GU
    > Modules linked in: ar9170usb [...]
    > Pid: 6588, comm: firmware/ar9170 Not tainted 2.6.34-rc5-wl #43
    > Call Trace:
    > [<c102b05e>] ? warn_slowpath_common+0x6e/0xb0
    > [<c117c93c>] ? kref_get+0x1c/0x20
    > [<c102b0b3>] ? warn_slowpath_null+0x13/0x20
    > [<c117c93c>] ? kref_get+0x1c/0x20
    > [<c117bb2f>] ? kobject_get+0xf/0x20
    > [<c124d630>] ? get_device+0x10/0x20
    > [<c124e5a0>] ? device_add+0x60/0x530
    > [<c117b8b5>] ? kobject_init+0x25/0xa0
    > [<c12569f9>] ? _request_firmware+0x139/0x3e0
    > [<c1256cc0>] ? request_firmware_work_func+0x20/0x70
    > [<c1256ca0>] ? request_firmware_work_func+0x0/0x70
    > [<c103ff24>] ? kthread+0x74/0x80
    > [<c103feb0>] ? kthread+0x0/0x80
    > [<c1003136>] ? kernel_thread_helper+0x6/0x10
    >---[ end trace 2d50bd818f64a1b7 ]---
    - followed by a random Oops -
    
    Avoid that by waiting for the firmware loading to finish
    (whether successfully or not) before the unbind in
    ar9170_usb_disconnect.
    Reported-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Bug-fixed-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    160b8242
usb.h 2.58 KB