Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c	(revision 64195)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c	(revision 64196)
@@ -87,8 +87,10 @@
 #endif
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
-# define VBOX_SKB_PAGE(page) page.p
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+# define VBOX_SKB_KMAP_FRAG(frag) kmap_atomic(skb_frag_page(frag))
+# define VBOX_SKB_KUNMAP_FRAG(vaddr) kunmap_atomic(vaddr)
 #else
-# define VBOX_SKB_PAGE(page) page
+# define VBOX_SKB_KMAP_FRAG(frag) kmap_skb_frag(frag)
+# define VBOX_SKB_KUNMAP_FRAG(vaddr) kunmap_skb_frag(vaddr)
 #endif
 
@@ -906,5 +908,5 @@
         skb_frag_t *pFrag = &skb_shinfo(pBuf)->frags[i];
         pSG->aSegs[iSeg].cb = pFrag->size;
-        pSG->aSegs[iSeg].pv = kmap_atomic(VBOX_SKB_PAGE(pFrag->page)) + pFrag->page_offset;
+        pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->page_offset;
         Log6((" %p", pSG->aSegs[iSeg].pv));
         pSG->aSegs[iSeg++].Phys = NIL_RTHCPHYS;
@@ -922,5 +924,5 @@
             skb_frag_t *pFrag = &skb_shinfo(pFragBuf)->frags[i];
             pSG->aSegs[iSeg].cb = pFrag->size;
-            pSG->aSegs[iSeg].pv = kmap_atomic(VBOX_SKB_PAGE(pFrag->page)) + pFrag->page_offset;
+            pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->page_offset;
             Log6((" %p", pSG->aSegs[iSeg].pv));
             pSG->aSegs[iSeg++].Phys = NIL_RTHCPHYS;
@@ -1164,5 +1166,5 @@
     {
         Log6((" %p", pSG->aSegs[iSeg].pv));
-        kunmap_atomic(pSG->aSegs[iSeg++].pv);
+        VBOX_SKB_KUNMAP_FRAG(pSG->aSegs[iSeg++].pv);
     }
     struct sk_buff *pFragBuf;
@@ -1173,5 +1175,5 @@
         {
             Log6((" %p", pSG->aSegs[iSeg].pv));
-            kunmap_atomic(pSG->aSegs[iSeg++].pv);
+            VBOX_SKB_KUNMAP_FRAG(pSG->aSegs[iSeg++].pv);
         }
     }
