mac80211: fix alignment calculation bug
authorJohannes Berg <johannes@sipsolutions.net>
Mon, 20 Apr 2009 23:36:59 +0000 (01:36 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 21 Apr 2009 20:43:33 +0000 (16:43 -0400)
When checking whether or not a given frame needs to be
moved to be properly aligned to a 4-byte boundary, we
use & 4 which wasn't intended, this code should check
the lowest two bits.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rx.c

index 5fa7aedd90eda481d38a13875c678558de59abb5..9776f73c51add2a2bf306370fbcc61a7814db3e5 100644 (file)
@@ -1397,7 +1397,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
                 * mac80211. That also explains the __skb_push()
                 * below.
                 */
-               align = (unsigned long)skb->data & 4;
+               align = (unsigned long)skb->data & 3;
                if (align) {
                        if (WARN_ON(skb_headroom(skb) < 3)) {
                                dev_kfree_skb(skb);