diff mbox

[PATCHi,V4] mac80211: fix paged defragmentation

Message ID 1273614672-25374-1-git-send-email-abhijeet.kolekar@intel.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Abhijeet Kolekar May 11, 2010, 9:51 p.m. UTC
None
diff mbox

Patch

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) {