Commit 8680451f38a64bd270233b3c0eeb7c45f2b5efe3

Authored by Bob Copeland
Committed by Johannes Berg
1 parent 9cbbffe2de

mac80211: add encrypt headroom to PERR frames

Mesh PERR action frames are robust and thus may be encrypted, so add
proper head/tailroom to allow this.  Fixes this warning when operating
a Mesh STA on ath5k:

WARNING: at net/mac80211/wpa.c:427 ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]()
Call Trace:
 [<c011c5e7>] warn_slowpath_common+0x63/0x78
 [<c011c60b>] warn_slowpath_null+0xf/0x13
 [<e090621d>] ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]
 [<e090685c>] ieee80211_crypto_ccmp_encrypt+0x1f/0x37 [mac80211]
 [<e0917113>] invoke_tx_handlers+0xcad/0x10bd [mac80211]
 [<e0917665>] ieee80211_tx+0x87/0xb3 [mac80211]
 [<e0918932>] ieee80211_tx_pending+0xcc/0x170 [mac80211]
 [<c0121c43>] tasklet_action+0x3e/0x65

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>

Showing 1 changed file with 3 additions and 1 deletions Side-by-side Diff

net/mac80211/mesh_hwmp.c
... ... @@ -247,11 +247,13 @@
247 247 return -EAGAIN;
248 248  
249 249 skb = dev_alloc_skb(local->tx_headroom +
  250 + IEEE80211_ENCRYPT_HEADROOM +
  251 + IEEE80211_ENCRYPT_TAILROOM +
250 252 hdr_len +
251 253 2 + 15 /* PERR IE */);
252 254 if (!skb)
253 255 return -1;
254   - skb_reserve(skb, local->tx_headroom);
  256 + skb_reserve(skb, local->tx_headroom + IEEE80211_ENCRYPT_HEADROOM);
255 257 mgmt = (struct ieee80211_mgmt *) skb_put(skb, hdr_len);
256 258 memset(mgmt, 0, hdr_len);
257 259 mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |