diff options
Diffstat (limited to 'net/mac80211/work.c')
| -rw-r--r-- | net/mac80211/work.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac80211/work.c b/net/mac80211/work.c index ae344d1ba05..146097cb43a 100644 --- a/net/mac80211/work.c +++ b/net/mac80211/work.c @@ -1051,11 +1051,13 @@ void ieee80211_work_purge(struct ieee80211_sub_if_data *sdata)  {  	struct ieee80211_local *local = sdata->local;  	struct ieee80211_work *wk; +	bool cleanup = false;  	mutex_lock(&local->mtx);  	list_for_each_entry(wk, &local->work_list, list) {  		if (wk->sdata != sdata)  			continue; +		cleanup = true;  		wk->type = IEEE80211_WORK_ABORT;  		wk->started = true;  		wk->timeout = jiffies; @@ -1063,7 +1065,8 @@ void ieee80211_work_purge(struct ieee80211_sub_if_data *sdata)  	mutex_unlock(&local->mtx);  	/* run cleanups etc. */ -	ieee80211_work_work(&local->work_work); +	if (cleanup) +		ieee80211_work_work(&local->work_work);  	mutex_lock(&local->mtx);  	list_for_each_entry(wk, &local->work_list, list) {  |