--- VBoxNetFlt-linux.c.orig	2009-01-21 17:16:09.000000000 -0600
+++ VBoxNetFlt-linux.c	2009-02-11 09:23:29.000000000 -0600
@@ -290,7 +259,7 @@
 }
 
 #define VBOXNETFLT_CB_TAG 0xA1C9D7C3
-#define VBOXNETFLT_SKB_TAG(skb) (*(uint32_t*)&((skb)->cb[sizeof((skb)->cb)-sizeof(uint32_t)]))
+#define VBOXNETFLT_SKB_CB(skb) (*(uint32_t*)&((skb)->cb[0]))
 
 /**
  * Checks whether this is an mbuf created by vboxNetFltLinuxMBufFromSG,
@@ -301,7 +270,7 @@
  */
 DECLINLINE(bool) vboxNetFltLinuxSkBufIsOur(struct sk_buff *pBuf)
 {
-    return VBOXNETFLT_SKB_TAG(pBuf) == VBOXNETFLT_CB_TAG ;
+    return VBOXNETFLT_SKB_CB(pBuf) == VBOXNETFLT_CB_TAG ;
 }
 
 
@@ -353,9 +322,9 @@
             VBOX_SKB_RESET_NETWORK_HDR(pPkt);
             /* Restore ethernet header back. */
             skb_push(pPkt, ETH_HLEN);
-            VBOX_SKB_RESET_MAC_HDR(pPkt);
         }
-        VBOXNETFLT_SKB_TAG(pPkt) = VBOXNETFLT_CB_TAG;
+        VBOX_SKB_RESET_MAC_HDR(pPkt);
+        VBOXNETFLT_SKB_CB(pPkt) = VBOXNETFLT_CB_TAG;
 
         return pPkt;
     }
