Search Linux Wireless

[PATCH 2/2] mac80211: add encrypt headroom to PERR frames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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:

[  220.838908] WARNING: at
/devel/compat-drivers-3.7-rc1-6-noHT5Gig/net/mac80211/wpa.c:427
ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]()
[  221.532067] Call Trace:
[  221.546693]  [<c011c5e7>] warn_slowpath_common+0x63/0x78
[  221.578517]  [<e090621d>] ? ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]
[  221.619159]  [<c011c60b>] warn_slowpath_null+0xf/0x13
[  221.649433]  [<e090621d>] ccmp_encrypt_skb.isra.5+0x7b/0x1a0 [mac80211]
[  221.689055]  [<e092a3f7>] ? minstrel_ht_get_rate+0x23/0x276 [mac80211]
[  221.728134]  [<c034dc3c>] ? kfree_skb+0x24/0x26
[  221.755296]  [<e090e151>] ? rate_control_get_rate+0x8d/0x202 [mac80211]
[  221.794907]  [<e090685c>] ieee80211_crypto_ccmp_encrypt+0x1f/0x37
[mac80211]
[  221.837127]  [<e0917113>] invoke_tx_handlers+0xcad/0x10bd [mac80211]
[  221.875186]  [<e0915335>] ? ieee80211_prepare_and_rx_handle+0x7dd/0x85b
[mac80211]
[  221.920523]  [<e0917665>] ieee80211_tx+0x87/0xb3 [mac80211]
[  221.953904]  [<e0918932>] ieee80211_tx_pending+0xcc/0x170 [mac80211]
[  221.991939]  [<c0121c43>] tasklet_action+0x3e/0x65
[  222.020635]  [<c0121e0d>] __do_softirq+0x75/0x104
[  222.048786]  [<c0121d98>] ? send_remote_softirq+0x22/0x22
[  222.081096]  <IRQ>  [<c0121f4c>] ? irq_exit+0x34/0x8a
[  222.111410]  [<c010349f>] ? do_IRQ+0x76/0x89
[  222.136939]  [<c03f8f2c>] ? common_interrupt+0x2c/0x31
[  222.167668]  [<c015007b>] ? audit_receive+0x20e/0x834
[  222.197927]  [<c01073cb>] ? default_idle+0x21/0x3b
[  222.226623]  [<c0107a5b>] ? cpu_idle+0x3f/0x72
[  222.253197]  [<c03ed717>] ? rest_init+0x63/0x65
[  222.280332]  [<c05288bc>] ? start_kernel+0x297/0x29c
[  222.310017]  [<c05282ae>] ? i386_start_kernel+0x78/0x7d
[  222.341261] ---[ end trace 958482fcd072de83 ]---

Signed-off-by: Bob Copeland <me@xxxxxxxxxxxxxxx>
---
 net/mac80211/mesh_hwmp.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
index 4cdf286..040418a 100644
--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -250,11 +250,13 @@ int mesh_path_error_tx(u8 ttl, u8 *target, __le32 target_sn,
 		return -EAGAIN;
 
 	skb = dev_alloc_skb(local->tx_headroom +
+			    IEEE80211_ENCRYPT_HEADROOM +
+			    IEEE80211_ENCRYPT_TAILROOM +
 			    hdr_len +
 			    2 + 15 /* PERR IE */);
 	if (!skb)
 		return -1;
-	skb_reserve(skb, local->tx_headroom);
+	skb_reserve(skb, local->tx_headroom + IEEE80211_ENCRYPT_HEADROOM);
 	mgmt = (struct ieee80211_mgmt *) skb_put(skb, hdr_len);
 	memset(mgmt, 0, hdr_len);
 	mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux