Message ID | 1273614672-25374-1-git-send-email-abhijeet.kolekar@intel.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 9a08f2c..af61aeb 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -1253,6 +1253,13 @@ 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. Also make sure compiler won't + * do any weird assignments. + */ + hdr = (struct ieee80211_hdr *)ACCESS_ONCE(rx->skb->data); seq = (sc & IEEE80211_SCTL_SEQ) >> 4; if (frag == 0) {