cfg80211: process pending events when unregistering net device
libertas currently calls cfg80211_disconnected() when it is being brought down. This causes an event to be allocated, but since the wdev is already removed from the rdev by the time that the event processing work executes, the event is never processed or freed. http://article.gmane.org/gmane.linux.kernel.wireless.general/95666 Fix this leak, and other possible situations, by processing the event queue when a device is being unregistered. Thanks to Johannes Berg for the suggestion. Signed-off-by: Daniel Drake <dsd@laptop.org> Cc: stable@vger.kernel.org Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
d4e5979c0d
commit
1f6fc43e62
3 changed files with 7 additions and 1 deletions
|
@ -952,6 +952,11 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
|||
*/
|
||||
synchronize_rcu();
|
||||
INIT_LIST_HEAD(&wdev->list);
|
||||
/*
|
||||
* Ensure that all events have been processed and
|
||||
* freed.
|
||||
*/
|
||||
cfg80211_process_wdev_events(wdev);
|
||||
break;
|
||||
case NETDEV_PRE_UP:
|
||||
if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue