--- a/net80211/ieee80211_input.c
+++ b/net80211/ieee80211_input.c
@@ -1275,14 +1275,8 @@
 		eh->ether_type = ether_type;
 
 	if (!ALIGNED_POINTER(skb->data + sizeof(*eh), u_int32_t)) {
-		struct sk_buff *tskb;
-
-		/* XXX: does this always work? */
-		tskb = skb_copy(skb, GFP_ATOMIC);
-		if (tskb)
-			ieee80211_skb_copy_noderef(skb, tskb);
-		ieee80211_dev_kfree_skb(&skb);
-		skb = tskb;
+		memmove(skb->data - 2, skb->data, skb->len);
+		skb->data -= 2;
 	}
 	return skb;
 }
