summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatthieu castet <castet.matthieu@free.fr>2009-06-04 22:16:18 +0200
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)
* mac80211. That also explains the __skb_push()
* below.
*/
- align = (unsigned long)skb->data & 3;
+ align = ((unsigned long)(skb->data + sizeof(struct ethhdr))) & 3;
if (align) {
if (WARN_ON(skb_headroom(skb) < 3)) {
dev_kfree_skb(skb);