summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authormatthieu castet <castet.matthieu@free.fr>2009-06-05 00:16:18 +0400
committerJohn W. Linville <linville@tuxdriver.com>2009-06-10 21:27:53 +0400
commitdacb6f1d8fa5200efc4e609fe63a750b960993b6 (patch)
treeaa6be0dbf67ec8b439655441d3bcdae2eb13b320 /net
parentb52a033c2c501a8015df3727a4bd73389ccb1641 (diff)
downloadlinux-dacb6f1d8fa5200efc4e609fe63a750b960993b6.tar.xz
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>
Diffstat (limited to 'net')
-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);