• Johannes Berg's avatar
    cfg80211: check for and abort dangling scan requests · 36e6fea8
    Johannes Berg authored
    If you trigger a scan request on an interface and then
    take it down, or rmmod the module or unplug the device
    the driver might "forget" to cancel the scan request.
    That is a bug in the driver, but the current behaviour
    is that we just hang endlessly waiting for the netdev
    refcount to become 0 which it never will. To improve
    robustness, check for this situation in cfg80211, warn
    about it and clean up behind the driver. I don't just
    clean up silently because it's likely that the driver
    also has some internal state it has now leaked.
    
    Additionally, this fixes a locking bug, clearing the
    scan_req pointer should be done under the rdev lock.
    
    Finally, we also need to _wait_ for the scan work and
    not just abort it since it might be pending and wanting
    to do a cleanup.
    Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    36e6fea8
scan.c 23.7 KB