diff options
Diffstat (limited to 'net/mac80211/rx.c')
| -rw-r--r-- | net/mac80211/rx.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index de5bba7f910..0936fc24942 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -2453,6 +2453,18 @@ void __ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb,  		return;  	} +	/* +	 * If we're suspending, it is possible although not too likely +	 * that we'd be receiving frames after having already partially +	 * quiesced the stack. We can't process such frames then since +	 * that might, for example, cause stations to be added or other +	 * driver callbacks be invoked. +	 */ +	if (unlikely(local->quiescing || local->suspended)) { +		kfree_skb(skb); +		return; +	} +  	if (status->flag & RX_FLAG_HT) {  		/* rate_idx is MCS index */  		if (WARN_ON(status->rate_idx < 0 ||  |