aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatthieu castet <castet.matthieu@free.fr>2009-06-04 16:16:18 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-06-10 13:27:53 -0400
commitdacb6f1d8fa5200efc4e609fe63a750b960993b6 (patch)
treeaa6be0dbf67ec8b439655441d3bcdae2eb13b320
parentb52a033c2c501a8015df3727a4bd73389ccb1641 (diff)
mac80211 : fix unaligned rx skb
mac80211 is checking is the skb is aligned on 32 bit boundary. But it is checking against ethernet header, whereas Linux expect IP header aligned. And ethernet ether size is 6*2+2=14, so aligning ethernet header make IP header unaligned. Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/mac80211/rx.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 6a9b8e63a6bf..754125185109 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1335,7 +1335,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
1335 * mac80211. That also explains the __skb_push() 1335 * mac80211. That also explains the __skb_push()
1336 * below. 1336 * below.
1337 */ 1337 */
1338 align = (unsigned long)skb->data & 3; 1338 align = ((unsigned long)(skb->data + sizeof(struct ethhdr))) & 3;
1339 if (align) { 1339 if (align) {
1340 if (WARN_ON(skb_headroom(skb) < 3)) { 1340 if (WARN_ON(skb_headroom(skb) < 3)) {
1341 dev_kfree_skb(skb); 1341 dev_kfree_skb(skb);