diff -ur kernel-source-virtualbox-5.2.34/kernel-source-vboxdrv-5.2.34/r0drv/linux/the-linux-kernel.h kernel-source-virtualbox-5.2.34.fixed/kernel-source-vboxdrv-5.2.34/r0drv/linux/the-linux-kernel.h --- kernel-source-vboxdrv-5.2.34/r0drv/linux/the-linux-kernel.h 2019-10-21 19:05:14.000000000 +0000 +++ kernel-source-vboxdrv-5.2.34.new/r0drv/linux/the-linux-kernel.h 2019-12-12 01:08:42.695569567 +0000 @@ -327,7 +327,11 @@ # endif #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +/* XXX The 5.4 kernel has no interface anymore to make kernel pages execcutable */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) +# define MY_SET_PAGES_EXEC(pPages, cPages) do {} while (0) +# define MY_SET_PAGES_NOEXEC(pPages, cPages) do {} while (0) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) # define MY_SET_PAGES_EXEC(pPages, cPages) set_pages_x(pPages, cPages) # define MY_SET_PAGES_NOEXEC(pPages, cPages) set_pages_nx(pPages, cPages) #else @@ -374,7 +378,7 @@ { /* use the set_pages_* API */ if (pgprot_val(prot) & _PAGE_NX) - set_pages_nx(page, numpages); + MY_SET_PAGES_NOEXEC(page, numpages); set_pages_uc(page, numpages); return 0; } diff -ur kernel-source-virtualbox-5.2.34/kernel-source-vboxdrv-5.2.34/include/iprt/cdefs.h kernel-source-virtualbox-5.2.34.fixed/kernel-source-vboxdrv-5.2.34/include/iprt/cdefs.h --- kernel-source-vboxdrv-5.2.34/include/iprt/cdefs.h 2019-10-21 11:53:32.000000000 +0000 +++ kernel-source-vboxdrv-5.2.34.new/include/iprt/cdefs.h 2019-12-12 00:55:38.819038629 +0000 @@ -1113,7 +1113,7 @@ * Tell the compiler that we're falling through to the next case in a switch. * @sa RT_FALL_THRU */ #if RT_GNUC_PREREQ(7, 0) -# define RT_FALL_THROUGH() __attribute__((fallthrough)) +# define RT_FALL_THROUGH() __attribute__((__fallthrough__)) #else # define RT_FALL_THROUGH() (void)0 #endif