Chotaire Wiki

Stuff you didn't know

User Tools

Site Tools


linux-leap423-vbox

Patches for VirtualBox to run with openSUSE Leap 42.3 kernels

This is obsolete and has been fixed upstream by Oracle in recent versions of VirtualBox.

Quick patch for OpenSUSE Leap 42.3 using get_user_pages() API from kernel 4.10 on kernel 4.4 (sigh):

--- src/vboxguest-5.1.26/vboxguest/r0drv/linux/memobj-r0drv-linux.c.orig   2017-07-27 13:45:39.000000000 +0200
+++ src/vboxguest-5.1.26/vboxguest/r0drv/linux/memobj-r0drv-linux.c        2017-07-28 00:07:05.225700000 +0200
@@ -1101,18 +1101,14 @@
 # endif
                                 );
 #else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) */
-            rc = get_user_pages(pTask,                  /* Task for fault accounting. */
-                                pTask->mm,              /* Whose pages. */
-                                R3Ptr,                  /* Where from. */
+           /* The following is modified for Leap 42.3 having the
+            *  get_user_pages() API from kernel 4.10
+            */
+            rc = get_user_pages(R3Ptr,                  /* Where from. */
                                 cPages,                 /* How many pages. */
-# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
                                 fWrite ? FOLL_WRITE |   /* Write to memory. */
                                          FOLL_FORCE     /* force write access. */
                                        : 0,             /* Write to memory. */
-# else
-                                fWrite,                 /* Write to memory. */
-                                fWrite,                 /* force write access. */
-# endif
                                 &pMemLnx->apPages[0],   /* Page array. */
                                 papVMAs);               /* vmas */
 #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) */

Proposed for upstream (VirtualBox):

<...>
# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
                                , NULL                  /* locked */
# endif
                                );
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) */
 
# if LEAP_VERSION == (4, 2, 3)
            rc = get_user_pages(R3Ptr,  
#else
            rc = get_user_pages(pTask,                  /* Task for fault accounting. */
                                pTask->mm,              /* Whose pages. */
                                R3Ptr,                  /* Where from. */
                                cPages,                 /* How many pages. */
# endif
# if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) && (LEAP_VERSION == (4, 2, 3))
                                fWrite ? FOLL_WRITE |   /* Write to memory. */
                                         FOLL_FORCE     /* force write access. */
                                       : 0,             /* Write to memory. */
# if LEAP_VERSION != (4, 2, 3)
                                fWrite,                 /* Write to memory. */
                                fWrite,                 /* force write access. */
# endif
                                &pMemLnx->apPages[0],   /* Page array. */
                                papVMAs);               /* vmas */
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) */
<...>



linux-leap423-vbox.txt ยท Last modified: 2019/04/23 20:16 by chotaire