On Wed, 2014-11-12 at 14:08 +0200, Jukka Rissanen wrote: > @@ -850,8 +852,10 @@ void __cfg80211_leave(struct cfg80211_registered_device *rdev, > break; > case NL80211_IFTYPE_P2P_CLIENT: > case NL80211_IFTYPE_STATION: > - if (rdev->sched_scan_req && dev == rdev->sched_scan_req->dev) > + if (sched_scan_req && dev == sched_scan_req->dev) { > + cancel_work_sync(&sched_scan_req->sched_scan_stop_wk); > __cfg80211_stop_sched_scan(rdev, false); > + } > > #ifdef CONFIG_CFG80211_WEXT > kfree(wdev->wext.ie); > @@ -991,6 +995,10 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, > > if (WARN_ON(rdev->sched_scan_req && > rdev->sched_scan_req->dev == wdev->netdev)) { > + struct cfg80211_sched_scan_request *sched_scan_req = > + rdev->sched_scan_req; > + > + cancel_work_sync(&sched_scan_req->sched_scan_stop_wk); > __cfg80211_stop_sched_scan(rdev, false); > } > This can cause deadlocks as it's done with the RTNL held, yet the work acquires the RTNL. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html