Summary
VirtualBox Guest Additions 7.2.8 fails to build kernel modules on RHEL 9.8 (kernel 5.14.0-687.10.1.el9_8.x86_64). The RHEL 9.8 fixes introduced in 7.2.6 (gh-467) are incomplete — some RTLNX_RHEL_RANGE version checks were updated to include (9,8, 9,99) but several others were missed.
Environment
- Host OS: Windows (VirtualBox 7.2.8)
- Guest OS: RHEL 9.8 (kernel 5.14.0-687.10.1.el9_8.x86_64)
- Guest Additions version: 7.2.8
Build errors
Error 1: from_timer removed (timer API)
r0drv/linux/timer-r0drv-linux.c:754:37: error: implicit declaration of function 'from_timer'
RHEL 9.8 backported the timer_container_of replacement for from_timer (upstream 6.16), but line 751 only checks RTLNX_VER_MIN(6,16,0) || RTLNX_RHEL_RANGE(10,2, 10,99).
Error 2: struct_mutex removed (DRM)
vbox_main.c:693:28: error: 'struct drm_device' has no member named 'struct_mutex'
RHEL 9.8 backported the struct_mutex removal (upstream 6.18), but lines 484, 686 in vbox_main.c and line 305 in vbox_drv.h only check RTLNX_VER_MIN(6,18,0) || RTLNX_RHEL_RANGE(10,2, 10,99).
Lines already fixed vs missed
Already have RTLNX_RHEL_RANGE(9,8, 9,99) (from the 7.2.6 fix):
vboxvideo/vbox_main.c:179
vboxvideo/vbox_main.c:200
Missing RTLNX_RHEL_RANGE(9,8, 9,99):
vboxvideo/vbox_main.c:484 — struct_mutex init
vboxvideo/vbox_main.c:686 — struct_mutex usage
vboxvideo/vbox_drv.h:305 — struct_mutex declaration
vboxguest/r0drv/linux/timer-r0drv-linux.c:425 — timer_delete
vboxguest/r0drv/linux/timer-r0drv-linux.c:477 — timer_delete_sync
vboxguest/r0drv/linux/timer-r0drv-linux.c:751 — timer_container_of / from_timer
vboxguest/r0drv/linux/timer-r0drv-linux.c:1641 — hrtimer_setup
Workaround
Adding || RTLNX_RHEL_RANGE(9,8, 9,99) to all the missed conditionals and rebuilding with /sbin/rcvboxadd quicksetup resolves the build failures.
Summary
VirtualBox Guest Additions 7.2.8 fails to build kernel modules on RHEL 9.8 (kernel
5.14.0-687.10.1.el9_8.x86_64). The RHEL 9.8 fixes introduced in 7.2.6 (gh-467) are incomplete — someRTLNX_RHEL_RANGEversion checks were updated to include(9,8, 9,99)but several others were missed.Environment
Build errors
Error 1:
from_timerremoved (timer API)RHEL 9.8 backported the
timer_container_ofreplacement forfrom_timer(upstream 6.16), but line 751 only checksRTLNX_VER_MIN(6,16,0) || RTLNX_RHEL_RANGE(10,2, 10,99).Error 2:
struct_mutexremoved (DRM)RHEL 9.8 backported the
struct_mutexremoval (upstream 6.18), but lines 484, 686 invbox_main.cand line 305 invbox_drv.honly checkRTLNX_VER_MIN(6,18,0) || RTLNX_RHEL_RANGE(10,2, 10,99).Lines already fixed vs missed
Already have
RTLNX_RHEL_RANGE(9,8, 9,99)(from the 7.2.6 fix):vboxvideo/vbox_main.c:179vboxvideo/vbox_main.c:200Missing
RTLNX_RHEL_RANGE(9,8, 9,99):vboxvideo/vbox_main.c:484— struct_mutex initvboxvideo/vbox_main.c:686— struct_mutex usagevboxvideo/vbox_drv.h:305— struct_mutex declarationvboxguest/r0drv/linux/timer-r0drv-linux.c:425— timer_deletevboxguest/r0drv/linux/timer-r0drv-linux.c:477— timer_delete_syncvboxguest/r0drv/linux/timer-r0drv-linux.c:751— timer_container_of / from_timervboxguest/r0drv/linux/timer-r0drv-linux.c:1641— hrtimer_setupWorkaround
Adding
|| RTLNX_RHEL_RANGE(9,8, 9,99)to all the missed conditionals and rebuilding with/sbin/rcvboxadd quicksetupresolves the build failures.