git: 5193a9f50db5 - main - emulators/virtualbox-ose-additions{,-nox11}-72: Add new ports VirtualBox Guest Additions 7.2.4

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Sat, 25 Oct 2025 02:01:07 UTC
The branch main has been updated by vvd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=5193a9f50db59d574ce036bb29670aa43fe9a33f

commit 5193a9f50db59d574ce036bb29670aa43fe9a33f
Author:     Vladimir Druzenko <vvd@FreeBSD.org>
AuthorDate: 2025-10-25 01:59:16 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2025-10-25 01:59:16 +0000

    emulators/virtualbox-ose-additions{,-nox11}-72: Add new ports VirtualBox Guest Additions 7.2.4
    
    Ports need more thorough testing at runtime.
    
    Changelog:
    https://www.virtualbox.org/wiki/Changelog-7.2
    
    PR:             289019
    Relnotes:       yes
---
 emulators/Makefile                                 |  2 +
 ...-Additions-common-VBoxGuest-VBoxGuest-freebsd.c | 32 +++++----
 ...Box-Additions-common-VBoxGuest-freebsd-Makefile | 23 +++++--
 ...x_Additions_freebsd_mount__vboxvfs_Makefile.kmk |  4 +-
 ...src_VBox_Additions_freebsd_vboxvfs_Makefile.kmk | 50 ++++++++++++++
 ...h-src_VBox_Additions_x11_vboxmouse_Makefile.kmk |  4 +-
 ...h-src_VBox_Additions_x11_vboxvideo_Makefile.kmk | 15 +++++
 ...src_VBox_Runtime_common_misc_handletablectx.cpp | 24 +++++++
 ...ox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c | 76 ++++++++++++----------
 emulators/virtualbox-ose-additions-72/Makefile     | 16 ++---
 emulators/virtualbox-ose-additions-72/distinfo     |  6 +-
 .../virtualbox-ose-additions-nox11-72/Makefile     |  4 +-
 12 files changed, 187 insertions(+), 69 deletions(-)

diff --git a/emulators/Makefile b/emulators/Makefile
index 3e0d4fdd1675..2f72f683ddb5 100644
--- a/emulators/Makefile
+++ b/emulators/Makefile
@@ -163,10 +163,12 @@
     SUBDIR += virtualbox-ose-additions
     SUBDIR += virtualbox-ose-additions-70
     SUBDIR += virtualbox-ose-additions-71
+    SUBDIR += virtualbox-ose-additions-72
     SUBDIR += virtualbox-ose-additions-legacy
     SUBDIR += virtualbox-ose-additions-nox11
     SUBDIR += virtualbox-ose-additions-nox11-70
     SUBDIR += virtualbox-ose-additions-nox11-71
+    SUBDIR += virtualbox-ose-additions-nox11-72
     SUBDIR += virtualbox-ose-additions-nox11-legacy
     SUBDIR += virtualbox-ose-kmod
     SUBDIR += virtualbox-ose-kmod-70
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
index 5344a7ab812f..204f6525ba77 100644
--- a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-VBoxGuest-freebsd.c
@@ -1,4 +1,4 @@
---- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig	2025-08-13 19:41:14 UTC
+--- src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c.orig	2025-10-16 14:25:28 UTC
 +++ src/VBox/Additions/common/VBoxGuest/VBoxGuest-freebsd.c
 @@ -55,6 +55,7 @@
  #include <sys/uio.h>
@@ -147,7 +147,7 @@
       * Create a new session.
       */
      fRequestor = VMMDEV_REQUESTOR_USERMODE | VMMDEV_REQUESTOR_TRUST_NOT_GIVEN;
-@@ -272,47 +211,20 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp
+@@ -272,14 +211,13 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp
      rc = VGDrvCommonCreateUserSession(&g_DevExt, fRequestor, &pSession);
      if (RT_SUCCESS(rc))
      {
@@ -168,10 +168,10 @@
      }
  
      LogRel(("vgdrvFreeBSDOpen: failed. rc=%d\n", rc));
-     return RTErrConvertToErrno(rc);
+@@ -287,33 +225,6 @@ static int vgdrvFreeBSDOpen(struct cdev *pDev, int fOp
  }
  
--/**
+ /**
 - * File close handler
 - *
 - */
@@ -179,7 +179,7 @@
 -{
 -    PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pDev->si_drv1;
 -    Log(("vgdrvFreeBSDClose: fFile=%#x pSession=%p\n", fFile, pSession));
- 
+-
 -    /*
 -     * Close the session if it's still hanging on to the device...
 -     */
@@ -198,10 +198,11 @@
 -}
 -
 -
- /**
+-/**
   * I/O control request.
   *
-@@ -326,8 +238,12 @@ static int vgdrvFreeBSDIOCtl(struct cdev *pDev, u_long
+  * @returns depends...
+@@ -326,8 +237,12 @@ static int vgdrvFreeBSDIOCtl(struct cdev *pDev, u_long
  static int vgdrvFreeBSDIOCtl(struct cdev *pDev, u_long ulCmd, caddr_t pvData, int fFile, struct thread *pTd)
  {
      PVBOXGUESTSESSION pSession;
@@ -215,20 +216,25 @@
      /*
       * Deal with the fast ioctl path first.
       */
-@@ -526,8 +442,10 @@ static int vgdrvFreeBSDPoll(struct cdev *pDev, int fEv
+@@ -522,12 +437,14 @@ static int vgdrvFreeBSDPoll(struct cdev *pDev, int fEv
+ 
+ static int vgdrvFreeBSDPoll(struct cdev *pDev, int fEvents, struct thread *td)
+ {
+-    int fEventsProcessed;
++    PVBOXGUESTSESSION pSession;
++    int fEventsProcessed, rc;
  
      LogFlow(("vgdrvFreeBSDPoll: fEvents=%d\n", fEvents));
  
 -    PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pDev->si_drv1;
 -    if (RT_UNLIKELY(!RT_VALID_PTR(pSession))) {
-+
 +    rc = devfs_get_cdevpriv((void **)&pSession);
 +    if (rc)
-+      {
++    {
          Log(("vgdrvFreeBSDPoll: no state data for %s\n", devtoname(pDev)));
          return (fEvents & (POLLHUP|POLLIN|POLLRDNORM|POLLOUT|POLLWRNORM));
      }
-@@ -568,11 +486,8 @@ static int vgdrvFreeBSDDetach(device_t pDevice)
+@@ -568,11 +485,8 @@ static int vgdrvFreeBSDDetach(device_t pDevice)
      /*
       * Reverse what we did in vgdrvFreeBSDAttach.
       */
@@ -241,7 +247,7 @@
      vgdrvFreeBSDRemoveIRQ(pDevice, pState);
  
      if (pState->pVMMDevMemRes)
-@@ -738,18 +653,21 @@ static int vgdrvFreeBSDAttach(device_t pDevice)
+@@ -738,18 +652,21 @@ static int vgdrvFreeBSDAttach(device_t pDevice)
                      VGDrvCommonProcessOptionsFromHost(&g_DevExt);
  
                      /*
@@ -269,7 +275,7 @@
                      vgdrvFreeBSDRemoveIRQ(pDevice, pState);
                  }
                  else
-@@ -793,8 +711,12 @@ static driver_t vgdrvFreeBSDDriver =
+@@ -793,8 +710,12 @@ static driver_t vgdrvFreeBSDDriver =
      sizeof(struct VBoxGuestDeviceState),
  };
  
diff --git a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile
index 1430dbb721fb..37c1596cfe87 100644
--- a/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile
+++ b/emulators/virtualbox-ose-72/files/patch-src-VBox-Additions-common-VBoxGuest-freebsd-Makefile
@@ -1,15 +1,17 @@
---- src/VBox/Additions/common/VBoxGuest/freebsd/Makefile.orig	2025-08-13 19:41:14 UTC
+--- src/VBox/Additions/common/VBoxGuest/freebsd/Makefile.orig	2025-10-16 14:25:29 UTC
 +++ src/VBox/Additions/common/VBoxGuest/freebsd/Makefile
-@@ -35,7 +35,7 @@ KMOD = vboxguest
+@@ -34,9 +34,8 @@ KMOD = vboxguest
+ # SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
  #
  KMOD = vboxguest
- 
--CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DVBOX_WITH_64_BITS_GUESTS
 +CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_GUEST -DIN_GUEST_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DVBOX_WITH_64_BITS_GUESTS
  
+-CFLAGS += -DRT_OS_FREEBSD -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -Iinclude -I. -Ir0drv -w -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DVBOX_WITH_64_BITS_GUESTS
+-
  .if (${MACHINE_ARCH} == "i386")
   CFLAGS += -DRT_ARCH_X86
-@@ -91,6 +91,7 @@ SRCS += \
+ .elif (${MACHINE_ARCH} == "amd64")
+@@ -91,6 +90,7 @@ SRCS += \
  	handletable.c \
  	handletablectx.c \
  	once.c \
@@ -17,7 +19,7 @@
  	thread.c
  
  .PATH:	${.CURDIR}/common/string
-@@ -163,6 +164,7 @@ SRCS += \
+@@ -163,6 +163,7 @@ SRCS += \
  
  .PATH:	${.CURDIR}/r0drv
  SRCS += \
@@ -25,3 +27,12 @@
  	alloc-r0drv.c \
  	initterm-r0drv.c \
  	memobj-r0drv.c \
+@@ -196,7 +197,7 @@ SRCS += \
+ SRCS += \
+ 	log-vbox.c \
+ 	logbackdoor.c \
+-	RTLogWriteVmm-amd64-x86.
++	RTLogWriteVmm-amd64-x86.c
+ 
+ .include <bsd.kmod.mk>
+ 
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk
index 270472c045e3..796aecabac8f 100644
--- a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_mount__vboxvfs_Makefile.kmk
@@ -1,4 +1,4 @@
---- src/VBox/Additions/freebsd/mount_vboxvfs/Makefile.kmk.orig	2025-05-11 03:54:13 UTC
+--- src/VBox/Additions/freebsd/mount_vboxvfs/Makefile.kmk.orig	2025-10-24 13:49:31 UTC
 +++ src/VBox/Additions/freebsd/mount_vboxvfs/Makefile.kmk
 @@ -0,0 +1,28 @@
 +# $Id: Makefile.kmk $
@@ -18,7 +18,7 @@
 +CFLAGS+=-I$(MOUNT)
 +
 +PROGRAMS                += mount_vboxvfs
-+mount_vboxvfs_TEMPLATE    = NewVBoxGuestR3Exe
++mount_vboxvfs_TEMPLATE    = VBoxGuestR3Exe
 +mount_vboxvfs_SOURCES     = mount_vboxvfs.c
 +
 +ifdef HAVE_MNTOPTS_IN_LIBUTIL
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_Makefile.kmk
new file mode 100644
index 000000000000..679778e60181
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_freebsd_vboxvfs_Makefile.kmk
@@ -0,0 +1,50 @@
+--- src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk.orig	2025-10-22 19:18:12 UTC
++++ src/VBox/Additions/freebsd/vboxvfs/Makefile.kmk
+@@ -43,32 +43,37 @@ vboxvfs_SOURCES       = \
+ 	$(vboxvfs_0_OUTDIR)
+ vboxvfs_SOURCES       = \
+ 	vboxvfs_vfsops.c \
+-	vboxvfs_vnops.c
++	bcmp.c \
++	vboxvfs_vnops.c \
++	vboxvfs_prov.c
+ vboxvfs_LIBS          = \
+ 	$(VBOX_LIB_VBGL_R0) \
+ 	$(VBOX_LIB_IPRT_GUEST_R0)
+ vboxvfs_DEPS          = \
+-	$$(vboxvfs_0_OUTDIR)/vnode_if.h \
+-	$$(vboxvfs_0_OUTDIR)/vnode_if_newproto.h \
+-	$$(vboxvfs_0_OUTDIR)/vnode_if_typedef.h
++	$(vboxvfs_0_OUTDIR)/vnode_if.h \
++	$(vboxvfs_0_OUTDIR)/vnode_if_newproto.h \
++	$(vboxvfs_0_OUTDIR)/vnode_if_typedef.h
+ vboxvfs_CLEAN        += $(vboxvfs_DEPS)
+ 
+ VBOX_AWK := /usr/bin/awk
+ 
+-$$(vboxvfs_0_OUTDIR)/vnode_if.h: $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
++$$(vboxvfs_0_OUTDIR):
++	$(QUIET)$(MKDIR) -p $(vboxvfs_0_OUTDIR)
++
++$$(vboxvfs_0_OUTDIR)/vnode_if.h: $$(vboxvfs_0_OUTDIR) $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
+ 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
+ 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/vnode_if.awk $(VBOX_FREEBSD_SRC)/kern/vnode_if.src -h
+-	$(QUIET)$(MV) $(vboxvfs_0_OUTDIR)/vnode_if.h $(vboxvfs_0_OUTDIR)/vnode_if.h
++	$(QUIET)$(MV) vnode_if.h $(vboxvfs_0_OUTDIR)/vnode_if.h
+ 
+-$$(vboxvfs_0_OUTDIR)/vnode_if_newproto.h: $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
++$$(vboxvfs_0_OUTDIR)/vnode_if_newproto.h: $$(vboxvfs_0_OUTDIR) $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
+ 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
+ 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/vnode_if.awk $(VBOX_FREEBSD_SRC)/kern/vnode_if.src -p
+-	$(QUIET)$(MV) $(vboxvfs_0_OUTDIR)/vnode_if_newproto.h $(vboxvfs_0_OUTDIR)/vnode_if_newproto.h
++	$(QUIET)$(MV) vnode_if_newproto.h $(vboxvfs_0_OUTDIR)/vnode_if_newproto.h
+ 
+-$$(vboxvfs_0_OUTDIR)/vnode_if_typedef.h: $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
++$$(vboxvfs_0_OUTDIR)/vnode_if_typedef.h: $$(vboxvfs_0_OUTDIR) $(VBOX_FREEBSD_SRC)/kern/vnode_if.src
+ 	$(call MSG_TOOL,awk,VBoxGuest,$<,$@)
+ 	$(QUIET)$(VBOX_AWK) -f $(VBOX_FREEBSD_SRC)/tools/vnode_if.awk $(VBOX_FREEBSD_SRC)/kern/vnode_if.src -q
+-	$(QUIET)$(MV) $(vboxvfs_0_OUTDIR)/vnode_if_typedef.h $(vboxvfs_0_OUTDIR)/vnode_if_typedef.h
++	$(QUIET)$(MV) vnode_if_typedef.h $(vboxvfs_0_OUTDIR)/vnode_if_typedef.h
+ 
+ include $(FILE_KBUILD_SUB_FOOTER)
+ 
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk
index bd5e626ecea2..2d0377fb3e40 100644
--- a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxmouse_Makefile.kmk
@@ -1,4 +1,4 @@
---- src/VBox/Additions/x11/vboxmouse/Makefile.kmk.orig	2025-08-13 19:41:22 UTC
+--- src/VBox/Additions/x11/vboxmouse/Makefile.kmk.orig	2025-10-16 14:25:37 UTC
 +++ src/VBox/Additions/x11/vboxmouse/Makefile.kmk
 @@ -237,10 +237,22 @@ ifdef VBOX_USE_SYSTEM_XORG_HEADERS
  
@@ -10,7 +10,7 @@
 - SYSMODS := $(filter-out vboxmouse_drv%,$(SYSMODS))
 + ifeq ($(KBUILD_TARGET),freebsd)
 +  DLLS += vboxmouse_drv_system
-+  vboxmouse_drv_system_TEMPLATE = VBOXGUESTR3XORGMOD
++  vboxmouse_drv_system_TEMPLATE = VBoxGuestR3XOrgMod
 +  vboxmouse_drv_system_DEFS := $(vboxmouse_drv_70_DEFS) NO_ANSIC
 +  vboxmouse_drv_system_INCS := \
 +	/usr/local/include/pixman-1 \
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxvideo_Makefile.kmk b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxvideo_Makefile.kmk
new file mode 100644
index 000000000000..38ef1ac68f9e
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Additions_x11_vboxvideo_Makefile.kmk
@@ -0,0 +1,15 @@
+--- src/VBox/Additions/x11/vboxvideo/Makefile.kmk.orig	2025-10-22 19:22:45 UTC
++++ src/VBox/Additions/x11/vboxvideo/Makefile.kmk
+@@ -415,9 +415,10 @@ ifdef VBOX_USE_SYSTEM_XORG_HEADERS
+  vboxvideo_drv_system_INCS += \
+  	$(PATH_ROOT)/src/VBox/Runtime/include \
+  	$(VBOX_GRAPHICS_INCS) \
+- 	/usr/include/xorg \
+- 	/usr/include/pixman-1
++ 	/usr/local/include/xorg \
++ 	/usr/local/include/pixman-1
+  vboxvideo_drv_system_SOURCES := $(vboxvideo_drv_17_SOURCES)
++ vboxvideo_drv_system_LIBS += $(vboxvideo_drv_70_LIBS)
+ endif
+ 
+ 
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_common_misc_handletablectx.cpp b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_common_misc_handletablectx.cpp
new file mode 100644
index 000000000000..f8fe5b1a7ba3
--- /dev/null
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_common_misc_handletablectx.cpp
@@ -0,0 +1,24 @@
+--- src/VBox/Runtime/common/misc/handletablectx.cpp.orig	2025-10-16 14:35:39 UTC
++++ src/VBox/Runtime/common/misc/handletablectx.cpp
+@@ -48,7 +48,9 @@
+ #include <iprt/param.h>
+ #include <iprt/string.h>
+ #include <iprt/asm.h>
++#ifndef IN_GUEST
+ #include <iprt/system.h>
++#endif
+ #include "internal/magics.h"
+ #include "handletable.h"
+ 
+@@ -118,7 +120,11 @@ RTDECL(int)     RTHandleTableAllocWithCtx(RTHANDLETABL
+              */
+             uint32_t const  iLevel1 = pThis->cCur / RTHT_LEVEL2_ENTRIES;
+             uint32_t        cLevel1 = iLevel1 >= pThis->cLevel1
++#ifndef IN_GUEST 
+                                     ? pThis->cLevel1 + RTSystemGetPageSize() / sizeof(void *)
++#else
++                                    ? pThis->cLevel1 + PAGE_SIZE / sizeof(void *)
++#endif
+                                     : 0;
+             if (cLevel1 > pThis->cMax / RTHT_LEVEL2_ENTRIES)
+                 cLevel1 = pThis->cMax / RTHT_LEVEL2_ENTRIES;
diff --git a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
index 4c0ed355709c..2ae9e1f34147 100644
--- a/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
+++ b/emulators/virtualbox-ose-72/files/patch-src_VBox_Runtime_r0drv_freebsd_memobj-r0drv-freebsd.c
@@ -1,4 +1,4 @@
---- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig	2025-04-14 17:59:13 UTC
+--- src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c.orig	2025-10-16 14:35:51 UTC
 +++ src/VBox/Runtime/r0drv/freebsd/memobj-r0drv-freebsd.c
 @@ -140,8 +140,10 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
  
@@ -11,16 +11,26 @@
  
      switch (pMemFreeBSD->Core.enmType)
      {
-@@ -156,8 +158,6 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+@@ -156,9 +158,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
  
          case RTR0MEMOBJTYPE_LOCK:
          {
 -            vm_map_t pMap = kernel_map;
 -
-             if (pMemFreeBSD->Core.u.Lock.R0Process != NIL_RTR0PROCESS)
+-            if (pMemFreeBSD->Core.u.Lock.R0Process != NIL_RTR0PROCESS)
++            if (pMemFreeBSD->Core.u.Lock.R0Process != NIL_RTR0PROCESS) {
                  pMap = &((struct proc *)pMemFreeBSD->Core.u.Lock.R0Process)->p_vmspace->vm_map;
  
-@@ -198,6 +198,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+             rc = vm_map_unwire(pMap,
+@@ -166,6 +166,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+                                (vm_offset_t)pMemFreeBSD->Core.pv + pMemFreeBSD->Core.cb,
+                                VM_MAP_WIRE_SYSTEM | VM_MAP_WIRE_NOHOLES);
+             AssertMsg(rc == KERN_SUCCESS, ("%#x", rc));
++	   }
+             break;
+         }
+ 
+@@ -198,6 +199,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
          case RTR0MEMOBJTYPE_PHYS_NC:
          {
              VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
@@ -28,7 +38,7 @@
              vm_page_t pPage = vm_page_find_least(pMemFreeBSD->pObject, 0);
  #if __FreeBSD_version < 1000000
              vm_page_lock_queues();
-@@ -211,6 +212,14 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+@@ -211,6 +213,14 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
  #if __FreeBSD_version < 1000000
              vm_page_unlock_queues();
  #endif
@@ -43,7 +53,7 @@
              VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
              vm_object_deallocate(pMemFreeBSD->pObject);
              break;
-@@ -221,6 +230,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
+@@ -221,6 +231,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem)
              return VERR_INTERNAL_ERROR;
      }
  
@@ -51,7 +61,7 @@
      return VINF_SUCCESS;
  }
  
-@@ -330,7 +340,8 @@ static int rtR0MemObjFreeBSDAllocHelper(PRTR0MEMOBJFRE
+@@ -330,7 +341,8 @@ static int rtR0MemObjFreeBSDAllocHelper(PRTR0MEMOBJFRE
      size_t      cPages = atop(pMemFreeBSD->Core.cb);
      int         rc;
  
@@ -61,7 +71,7 @@
  
      /* No additional object reference for auto-deallocation upon unmapping. */
  #if __FreeBSD_version >= 1000055
-@@ -372,6 +383,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJ
+@@ -372,6 +384,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJ
  
  DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable, const char *pszTag)
  {
@@ -69,7 +79,7 @@
      PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_PAGE,
                                                                         NULL, cb, pszTag);
      if (pMemFreeBSD)
-@@ -381,8 +393,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJ
+@@ -381,8 +394,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJ
              *ppMem = &pMemFreeBSD->Core;
          else
              rtR0MemObjDelete(&pMemFreeBSD->Core);
@@ -80,7 +90,7 @@
      return VERR_NO_MEMORY;
  }
  
-@@ -396,6 +410,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJI
+@@ -396,6 +411,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJI
  
  DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable, const char *pszTag)
  {
@@ -88,7 +98,7 @@
      PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_LOW, NULL, cb, pszTag);
      if (pMemFreeBSD)
      {
-@@ -404,8 +419,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJI
+@@ -404,8 +420,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJI
              *ppMem = &pMemFreeBSD->Core;
          else
              rtR0MemObjDelete(&pMemFreeBSD->Core);
@@ -99,7 +109,7 @@
      return VERR_NO_MEMORY;
  }
  
-@@ -413,6 +430,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJ
+@@ -413,6 +431,7 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJ
  DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHigest,
                                            bool fExecutable, const char *pszTag)
  {
@@ -107,7 +117,7 @@
      PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_CONT,
                                                                         NULL, cb, pszTag);
      if (pMemFreeBSD)
-@@ -425,8 +443,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJ
+@@ -425,8 +444,10 @@ DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJ
          }
          else
              rtR0MemObjDelete(&pMemFreeBSD->Core);
@@ -118,7 +128,7 @@
      return VERR_NO_MEMORY;
  }
  
-@@ -434,6 +454,7 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+@@ -434,6 +455,7 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
  static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJTYPE enmType, size_t cb,  RTHCPHYS PhysHighest,
                                             size_t uAlignment, bool fContiguous, int rcNoMem, const char *pszTag)
  {
@@ -126,7 +136,7 @@
      /* create the object. */
      PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), enmType, NULL, cb, pszTag);
      if (pMemFreeBSD)
-@@ -441,7 +462,8 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+@@ -441,7 +463,8 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
          vm_paddr_t const VmPhysAddrHigh = PhysHighest != NIL_RTHCPHYS ? PhysHighest : ~(vm_paddr_t)0;
          u_long const     cPages         = atop(cb);
  
@@ -136,7 +146,7 @@
  
          int rc = rtR0MemObjFreeBSDPhysAllocHelper(pMemFreeBSD->pObject, cPages, VmPhysAddrHigh,
                                                    uAlignment, fContiguous, true, rcNoMem);
-@@ -451,7 +473,7 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+@@ -451,7 +474,7 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
              {
                  Assert(enmType == RTR0MEMOBJTYPE_PHYS);
                  VM_OBJECT_WLOCK(pMemFreeBSD->pObject);
@@ -145,7 +155,7 @@
                  VM_OBJECT_WUNLOCK(pMemFreeBSD->pObject);
                  pMemFreeBSD->Core.u.Phys.fAllocated = true;
              }
-@@ -464,8 +486,10 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
+@@ -464,8 +487,10 @@ static int rtR0MemObjFreeBSDAllocPhysPages(PPRTR0MEMOB
              vm_object_deallocate(pMemFreeBSD->pObject);
              rtR0MemObjDelete(&pMemFreeBSD->Core);
          }
@@ -156,7 +166,7 @@
      return VERR_NO_MEMORY;
  }
  
-@@ -488,6 +512,7 @@ DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJ
+@@ -488,6 +513,7 @@ DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJ
                                            const char *pszTag)
  {
      AssertReturn(uCachePolicy == RTMEM_CACHE_POLICY_DONT_CARE, VERR_NOT_SUPPORTED);
@@ -164,7 +174,7 @@
  
      /* create the object. */
      PRTR0MEMOBJFREEBSD pMemFreeBSD = (PRTR0MEMOBJFREEBSD)rtR0MemObjNew(sizeof(*pMemFreeBSD), RTR0MEMOBJTYPE_PHYS,
-@@ -499,8 +524,10 @@ DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJ
+@@ -499,8 +525,10 @@ DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJ
          pMemFreeBSD->Core.u.Phys.PhysBase = Phys;
          pMemFreeBSD->Core.u.Phys.uCachePolicy = uCachePolicy;
          *ppMem = &pMemFreeBSD->Core;
@@ -175,7 +185,7 @@
      return VERR_NO_MEMORY;
  }
  
-@@ -512,6 +539,7 @@ static int rtR0MemObjNativeLockInMap(PPRTR0MEMOBJINTER
+@@ -512,6 +540,7 @@ static int rtR0MemObjNativeLockInMap(PPRTR0MEMOBJINTER
                                       vm_offset_t AddrStart, size_t cb, uint32_t fAccess,
                                       RTR0PROCESS R0Process, int fFlags, const char *pszTag)
  {
@@ -183,7 +193,7 @@
      int rc;
      NOREF(fAccess);
  
-@@ -521,21 +549,28 @@ static int rtR0MemObjNativeLockInMap(PPRTR0MEMOBJINTER
+@@ -521,21 +550,28 @@ static int rtR0MemObjNativeLockInMap(PPRTR0MEMOBJINTER
      if (!pMemFreeBSD)
          return VERR_NO_MEMORY;
  
@@ -220,7 +230,7 @@
      return VERR_NO_MEMORY;/** @todo fix mach -> vbox error conversion for freebsd. */
  }
  
-@@ -575,6 +610,7 @@ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJIN
+@@ -575,6 +611,7 @@ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJIN
  static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment,
                                          RTR0PROCESS R0Process, vm_map_t pMap, const char *pszTag)
  {
@@ -228,7 +238,7 @@
      int rc;
  
      /*
-@@ -633,11 +669,13 @@ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJIN
+@@ -633,11 +670,13 @@ static int rtR0MemObjNativeReserveInMap(PPRTR0MEMOBJIN
          pMemFreeBSD->Core.pv = (void *)MapAddress;
          pMemFreeBSD->Core.u.ResVirt.R0Process = R0Process;
          *ppMem = &pMemFreeBSD->Core;
@@ -242,7 +252,7 @@
      return rc;
  
  }
-@@ -661,6 +699,8 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
+@@ -661,6 +700,8 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
  DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, void *pvFixed, size_t uAlignment,
                                            unsigned fProt, size_t offSub, size_t cbSub, const char *pszTag)
  {
@@ -251,7 +261,7 @@
  //  AssertMsgReturn(!offSub && !cbSub, ("%#x %#x\n", offSub, cbSub), VERR_NOT_SUPPORTED);
      AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED);
  
-@@ -715,6 +755,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
+@@ -715,6 +756,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
              Assert((vm_offset_t)pMemFreeBSD->Core.pv == Addr);
              pMemFreeBSD->Core.u.Mapping.R0Process = NIL_RTR0PROCESS;
              *ppMem = &pMemFreeBSD->Core;
@@ -259,7 +269,7 @@
              return VINF_SUCCESS;
          }
          rc = vm_map_remove(kernel_map, Addr, Addr + cbSub);
-@@ -723,6 +764,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
+@@ -723,6 +765,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJ
      else
          vm_object_deallocate(pMemToMapFreeBSD->pObject);
  
@@ -267,7 +277,7 @@
      return VERR_NO_MEMORY;
  }
  
-@@ -730,6 +772,8 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJIN
+@@ -730,6 +773,8 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJIN
  DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment,
                                          unsigned fProt, RTR0PROCESS R0Process, size_t offSub, size_t cbSub, const char *pszTag)
  {
@@ -276,7 +286,7 @@
      /*
       * Check for unsupported stuff.
       */
-@@ -787,44 +831,50 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJIN
+@@ -787,44 +832,50 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJIN
  
      if (rc == KERN_SUCCESS)
      {
@@ -331,7 +341,7 @@
  
      if ((fProt & RTMEM_PROT_NONE) == RTMEM_PROT_NONE)
          ProtectionFlags = VM_PROT_NONE;
-@@ -835,7 +885,12 @@ DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINT
+@@ -835,7 +886,12 @@ DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINT
      if ((fProt & RTMEM_PROT_EXEC) == RTMEM_PROT_EXEC)
          ProtectionFlags |= VM_PROT_EXECUTE;
  
@@ -344,7 +354,7 @@
      if (krc == KERN_SUCCESS)
          return VINF_SUCCESS;
  
-@@ -860,11 +915,19 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
+@@ -860,11 +916,19 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
  
              vm_offset_t pb = (vm_offset_t)pMemFreeBSD->Core.pv + ptoa(iPage);
  
@@ -368,7 +378,7 @@
          }
  
          case RTR0MEMOBJTYPE_MAPPING:
-@@ -873,11 +936,15 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
+@@ -873,11 +937,15 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
  
              if (pMemFreeBSD->Core.u.Mapping.R0Process != NIL_RTR0PROCESS)
              {
@@ -385,7 +395,7 @@
              }
              return vtophys(pb);
          }
-@@ -888,9 +955,11 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
+@@ -888,9 +956,11 @@ DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(P
          {
              RTHCPHYS addr;
  
@@ -397,7 +407,7 @@
              return addr;
          }
  
-@@ -910,7 +979,7 @@ DECLHIDDEN(int) rtR0MemObjNativeZeroInitWithoutMapping
+@@ -910,7 +980,7 @@ DECLHIDDEN(int) rtR0MemObjNativeZeroInitWithoutMapping
  DECLHIDDEN(int) rtR0MemObjNativeZeroInitWithoutMapping(PRTR0MEMOBJINTERNAL pMem)
  {
      PRTR0MEMOBJFREEBSD const pMemFreeBsd = (PRTR0MEMOBJFREEBSD)pMem;
diff --git a/emulators/virtualbox-ose-additions-72/Makefile b/emulators/virtualbox-ose-additions-72/Makefile
index 3a252cd3362b..6196899a7ad8 100644
--- a/emulators/virtualbox-ose-additions-72/Makefile
+++ b/emulators/virtualbox-ose-additions-72/Makefile
@@ -1,9 +1,9 @@
 PORTNAME=	virtualbox-ose
-DISTVERSION=	7.1.14
+DISTVERSION=	7.2.4
 PORTREVISION?=	0
 CATEGORIES=	emulators
 MASTER_SITES=	https://download.virtualbox.org/virtualbox/${DISTVERSION}/
-PKGNAMESUFFIX?=	-additions-71
+PKGNAMESUFFIX?=	-additions-72
 DISTNAME=	VirtualBox-${DISTVERSION}
 
 MAINTAINER=	vbox@FreeBSD.org
@@ -43,12 +43,12 @@ CONFLICTS_INSTALL=	virtualbox-ose-additions-legacy \
 			virtualbox-ose-additions-nox11 \
 			virtualbox-ose-additions-70 \
 			virtualbox-ose-additions-nox11-70 \
-			virtualbox-ose-additions-72 \
-			virtualbox-ose-additions-nox11-72
+			virtualbox-ose-additions-71 \
+			virtualbox-ose-additions-nox11-71
 
-PATCHDIR=		${.CURDIR}/../${PORTNAME}-71/files
+PATCHDIR=		${.CURDIR}/../${PORTNAME}-72/files
 EXTRACT_AFTER_ARGS=	--exclude tools/*.x86 --exclude tools/*.amd64 --exclude Firmware
-PORTSCOUT=		limit:^7\.1\.
+PORTSCOUT=		limit:^7\.2\.
 
 WRKSRC=			${WRKDIR}/VirtualBox-${DISTVERSION}
 
@@ -70,9 +70,9 @@ X11_VARS=		VBOX_WITH_X11=1
 .include <bsd.port.options.mk>
 
 .if ${SLAVE_PORT} == no
-CONFLICTS_INSTALL+=	virtualbox-ose-additions-nox11-71
+CONFLICTS_INSTALL+=	virtualbox-ose-additions-nox11-72
 .else
-CONFLICTS_INSTALL+=	virtualbox-ose-additions-71
+CONFLICTS_INSTALL+=	virtualbox-ose-additions-72
 .endif
 
 VIDEODIR=	${PREFIX}/lib/xorg/modules/drivers
diff --git a/emulators/virtualbox-ose-additions-72/distinfo b/emulators/virtualbox-ose-additions-72/distinfo
index 904760a18c0f..729b45a32abd 100644
--- a/emulators/virtualbox-ose-additions-72/distinfo
+++ b/emulators/virtualbox-ose-additions-72/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1761146098
-SHA256 (VirtualBox-7.1.14.tar.bz2) = 6a4eea884cd98049a5357133b718078d8aaae68047836a3f86cd5904336d6218
-SIZE (VirtualBox-7.1.14.tar.bz2) = 216819853
+TIMESTAMP = 1761088888
+SHA256 (VirtualBox-7.2.4.tar.bz2) = d281ec981b5f580211a0cedd1b75a1adcb0fbfcbb768d8c2bf4429f4763e8bbd
+SIZE (VirtualBox-7.2.4.tar.bz2) = 207084201
diff --git a/emulators/virtualbox-ose-additions-nox11-72/Makefile b/emulators/virtualbox-ose-additions-nox11-72/Makefile
index ef057aa1f5f2..ed7edcf49366 100644
--- a/emulators/virtualbox-ose-additions-nox11-72/Makefile
+++ b/emulators/virtualbox-ose-additions-nox11-72/Makefile
@@ -1,7 +1,7 @@
 PORTREVISION=	0
-PKGNAMESUFFIX=	-additions-nox11-71
+PKGNAMESUFFIX=	-additions-nox11-72
 
-MASTERDIR=	${.CURDIR}/../virtualbox-ose-additions-71
+MASTERDIR=	${.CURDIR}/../virtualbox-ose-additions-72
 
 OPTIONS_EXCLUDE=	DBUS DEBUG OPENGL X11