mac80211: allow transmitting deauth with tainted key
authorJohannes Berg <johannes.berg@intel.com>
Tue, 29 Jan 2013 10:41:38 +0000 (11:41 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 4 Feb 2013 17:57:44 +0000 (18:57 +0100)
When we had a connection for WoWLAN and after resume it
needed to be disconnected, the previous commit enabled
sending a deauth frame to the AP. This frame would not
go through on MFP-enabled networks as the key for it is
marked tainted before the frame is transmitted.

Allow a tainted key to be used for deauth frames. Worst
case, we'll use a wrong key because the PTK was rekeyed
while suspended, but more likely the PTK is still fine
and the taint flag really only applies to the GTK(s).

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c

index a2cb6a302cc74216d0ac929a2a193b1c0c5c0a25..7892b0a8873e7418819c1d7948764fd1dda553c3 100644 (file)
@@ -594,7 +594,8 @@ ieee80211_tx_h_select_key(struct ieee80211_tx_data *tx)
                        break;
                }
 
-               if (unlikely(tx->key && tx->key->flags & KEY_FLAG_TAINTED))
+               if (unlikely(tx->key && tx->key->flags & KEY_FLAG_TAINTED &&
+                            !ieee80211_is_deauth(hdr->frame_control)))
                        return TX_DROP;
 
                if (!skip_hw && tx->key &&