@@ -1234,14 +1234,16 @@ ieee80211_rx_h_defragment(struct ieee80211_rx_data *rx)
{
struct ieee80211_hdr *hdr;
u16 sc;
- __le16 fc;
+ __le16 fc, seq_ctrl;
unsigned int frag, seq;
struct ieee80211_fragment_entry *entry;
struct sk_buff *skb;
hdr = (struct ieee80211_hdr *)rx->skb->data;
fc = hdr->frame_control;
- sc = le16_to_cpu(hdr->seq_ctrl);
+ skb_copy_bits(rx->skb, offsetof(struct ieee80211_hdr, seq_ctrl),
+ &seq_ctrl, sizeof(seq_ctrl));
+ sc = le16_to_cpu(seq_ctrl);
frag = sc & IEEE80211_SCTL_FRAG;
if (likely((!ieee80211_has_morefrags(fc) && frag == 0) ||