Hello Everyone, Currently virtualbox fails to compile for kernel version 4.9 and up. This is due to a change in get_user_pages api. The ints for write and force have changed to gup_flags. Please find the patch attach to fix this for linux 4.9 and up. Thanks,
Reinoud.
--- source/r0drv/linux/memobj-r0drv-linux.c.orig 2017-08-01 15:57:35.175068385 -0700 +++ source/r0drv/linux/memobj-r0drv-linux.c 2017-08-01 15:55:43.357301836 -0700 @@ -1018,6 +1018,14 @@ PRTR0MEMOBJLNX pMemLnx; int rc = VERR_NO_MEMORY; int const fWrite = fAccess & RTMEM_PROT_WRITE ? 1 : 0; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) + unsigned int flags = 0; + + if (fWrite) { + flags = FOLL_WRITE; + flags |= FOLL_FORCE; + } +#endif /* * Check for valid task and size overflows. @@ -1045,7 +1053,27 @@ /* * Get user pages. */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0) + if (R0Process == RTR0ProcHandleSelf()) + rc = get_user_pages(R3Ptr, /* Where from. */ + cPages, /* How many pages. */ + flags, /* gup_flags. */ + &pMemLnx->apPages[0], /* Page array. */ + papVMAs); /* vmas */ + /* + * Actually this should not happen at the moment as call this function + * only for our own process. + */ + else + rc = get_user_pages_remote( + pTask, /* Task for fault accounting. */ + pTask->mm, /* Whose pages. */ + R3Ptr, /* Where from. */ + cPages, /* How many pages. */ + flags, /* gup_flags. */ + &pMemLnx->apPages[0], /* Page array. */ + papVMAs); /* vmas */ +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) if (R0Process == RTR0ProcHandleSelf()) rc = get_user_pages(R3Ptr, /* Where from. */ cPages, /* How many pages. */
_______________________________________________ vbox-dev mailing list vbox-dev@virtualbox.org https://www.virtualbox.org/mailman/listinfo/vbox-dev