mac80211: fix paged defragmentation
authorAbhijeet Kolekar <abhijeet.kolekar@intel.com>
Tue, 11 May 2010 18:22:11 +0000 (11:22 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 12 May 2010 20:39:07 +0000 (16:39 -0400)
Paged RX skb patch broke the defragmentation. We need to read hdr again
after linearization.

It fixes following bug
http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2194

Signed-off-by: Zhu, Yi <yi.zhu@intel.com>
Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rx.c

index e4f325f..8fa9955 100644 (file)
@@ -1252,6 +1252,12 @@ ieee80211_rx_h_defragment(struct ieee80211_rx_data *rx)
        if (skb_linearize(rx->skb))
                return RX_DROP_UNUSABLE;
 
+       /*
+        *  skb_linearize() might change the skb->data and
+        *  previously cached variables (in this case, hdr) need to
+        *  be refreshed with the new data.
+        */
+       hdr = (struct ieee80211_hdr *)rx->skb->data;
        seq = (sc & IEEE80211_SCTL_SEQ) >> 4;
 
        if (frag == 0) {