Index: VirtualBox-7.0.14/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c =================================================================== --- VirtualBox-7.0.14.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c +++ VirtualBox-7.0.14/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c @@ -938,8 +938,13 @@ static void vboxNetFltLinuxSkBufToSG(PVB { skb_frag_t *pFrag = &skb_shinfo(pBuf)->frags[i]; # if RTLNX_VER_MIN(5,4,0) || RTLNX_SUSE_MAJ_PREREQ(15, 2) - pSG->aSegs[iSeg].cb = pFrag->bv_len; - pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->bv_offset; +# if RTLNX_VER_MIN(6,9,0) + pSG->aSegs[iSeg].cb = pFrag->len; + pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->offset; +# else + pSG->aSegs[iSeg].cb = pFrag->bv_len; + pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->bv_offset; +#endif # else /* < KERNEL_VERSION(5, 4, 0) */ pSG->aSegs[iSeg].cb = pFrag->size; pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->page_offset; @@ -959,8 +964,13 @@ static void vboxNetFltLinuxSkBufToSG(PVB { skb_frag_t *pFrag = &skb_shinfo(pFragBuf)->frags[i]; # if RTLNX_VER_MIN(5,4,0) || RTLNX_SUSE_MAJ_PREREQ(15, 2) - pSG->aSegs[iSeg].cb = pFrag->bv_len; +# if RTLNX_VER_MIN(6,9,0) + pSG->aSegs[iSeg].cb = pFrag->len; + pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->offset; +#else + pSG->aSegs[iSeg].cb = pFrag->bv_len; pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->bv_offset; +#endif # else /* < KERNEL_VERSION(5, 4, 0) */ pSG->aSegs[iSeg].cb = pFrag->size; pSG->aSegs[iSeg].pv = VBOX_SKB_KMAP_FRAG(pFrag) + pFrag->page_offset; Index: VirtualBox-7.0.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c =================================================================== --- VirtualBox-7.0.14.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c +++ VirtualBox-7.0.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c @@ -1174,7 +1174,11 @@ RTDECL(struct page *) rtR0MemObjLinuxVir u.Four = *p4d_offset(&u.Global, ulAddr); if (RT_UNLIKELY(p4d_none(u.Four))) return NULL; +# if RTLNX_VER_MIN(6,9,0) + if (p4d_page(u.Four)) +#else if (p4d_large(u.Four)) +#endif { pPage = p4d_page(u.Four); AssertReturn(pPage, NULL); @@ -1190,7 +1194,11 @@ RTDECL(struct page *) rtR0MemObjLinuxVir if (RT_UNLIKELY(pud_none(u.Upper))) return NULL; # if RTLNX_VER_MIN(2,6,25) +# if RTLNX_VER_MIN(6,9,0) + if (pud_page(u.Upper)) +#else if (pud_large(u.Upper)) +#endif { pPage = pud_page(u.Upper); AssertReturn(pPage, NULL); @@ -1206,7 +1214,11 @@ RTDECL(struct page *) rtR0MemObjLinuxVir if (RT_UNLIKELY(pmd_none(u.Middle))) return NULL; #if RTLNX_VER_MIN(2,6,0) +# if RTLNX_VER_MIN(6,9,0) + if (pmd_page(u.Middle)) +#else if (pmd_large(u.Middle)) +#endif { pPage = pmd_page(u.Middle); AssertReturn(pPage, NULL);