From patchwork Tue May 11 18:22:11 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abhijeet Kolekar X-Patchwork-Id: 98789 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o4BIBNB4002877 for ; Tue, 11 May 2010 18:11:23 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752732Ab0EKSLV (ORCPT ); Tue, 11 May 2010 14:11:21 -0400 Received: from mga14.intel.com ([143.182.124.37]:15886 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751767Ab0EKSLV (ORCPT ); Tue, 11 May 2010 14:11:21 -0400 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 11 May 2010 11:11:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.53,209,1272870000"; d="scan'208";a="275877151" Received: from wifisr4.jf.intel.com (HELO localhost.localdomain) ([10.23.232.224]) by azsmga001.ch.intel.com with ESMTP; 11 May 2010 11:11:19 -0700 From: Abhijeet Kolekar To: linux-wireless@vger.kernel.org Cc: yi.zhu@intel.com, Abhijeet Kolekar Subject: [PATCH V3] mac80211: fix paged defragmentation Date: Tue, 11 May 2010 11:22:11 -0700 Message-Id: <1273602131-9188-1-git-send-email-abhijeet.kolekar@intel.com> X-Mailer: git-send-email 1.6.3.3 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Tue, 11 May 2010 18:11:23 +0000 (UTC) diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 9a08f2c..6e2a7bc 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c @@ -1253,6 +1253,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) {