summaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
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 19:27:53 +0200
commitdacb6f1d8fa5200efc4e609fe63a750b960993b6 (patch)
treeaa6be0dbf67ec8b439655441d3bcdae2eb13b320 /net/mac80211/rx.c
parentb43: Fix possible unaligned u32 access (diff)
downloadlinux-dacb6f1d8fa5200efc4e609fe63a750b960993b6.tar.xz
linux-dacb6f1d8fa5200efc4e609fe63a750b960993b6.zip
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 '')
-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);