[vbox-dev] VirtualBox 6.0 - build fix for Linux 5.1

Larry Finger Larry.Finger at lwfinger.net
Wed Mar 20 19:39:00 GMT 2019


On 3/14/19 3:57 PM, Valdis Klētnieks wrote:
> Sayeth Linus:
> 
> commit 736706bee3298208343a76096370e4f6a5c55915
> Author: Linus Torvalds <torvalds at linux-foundation.org>
> Date:   Mon Mar 4 10:39:05 2019 -0800
> 
>      get rid of legacy 'get_ds()' function
>      
>      Every in-kernel use of this function defined it to KERNEL_DS (either as
>      an actual define, or as an inline function).  It's an entirely
>      historical artifact, and long long long ago used to actually read the
>      segment selector valueof '%ds' on x86.
>      
>      Which in the kernel is always KERNEL_DS.
> 
> No kernel release versioning on the patch, as the define was in the tree
> when Linus did the initial import into git for v2.6.12-rc2 back in April 2005.
> If you're trying to build this on a kernel older than that, this is the least of
> your problems. :)
> 
> --- vboxhost/vboxpci/linux/VBoxPci-linux.c.dist	2019-03-14 16:37:18.758730554 -0400
> +++vboxhost/vboxpci/linux/VBoxPci-linux.c	2019-03-14 16:37:46.354160251 -0400
> @@ -372,7 +372,7 @@ static int vboxPciFileWrite(struct file*
>       mm_segment_t fs_save;
>   
>       fs_save = get_fs();
> -    set_fs(get_ds());
> +    set_fs(KERNEL_DS);
>   #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
>       ret = kernel_write(file, data, size, &offset);
>   #else

On openSUSE, I found two additional incompatibilities with kernel 5.1. My 
resulting patch with MIT license is

Index: VirtualBox-6.0.4/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
===================================================================
--- VirtualBox-6.0.4.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+++ VirtualBox-6.0.4/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
@@ -38,6 +38,9 @@
  #include <iprt/process.h>
  #include <iprt/string.h>
  #include "internal/memobj.h"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+#include <uapi/linux/mman.h>
+#endif


 
/*********************************************************************************************************************************
Index: VirtualBox-6.0.4/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
===================================================================
--- VirtualBox-6.0.4.orig/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
+++ VirtualBox-6.0.4/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
@@ -372,7 +372,7 @@ static int vboxPciFileWrite(struct file*
      mm_segment_t fs_save;

      fs_save = get_fs();
-    set_fs(get_ds());
+    set_fs(KERNEL_DS);
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
      ret = kernel_write(file, data, size, &offset);
  #else
Index: VirtualBox-6.0.4/src/VBox/Additions/linux/sharedfolders/regops.c
===================================================================
--- VirtualBox-6.0.4.orig/src/VBox/Additions/linux/sharedfolders/regops.c
+++ VirtualBox-6.0.4/src/VBox/Additions/linux/sharedfolders/regops.c
@@ -588,7 +588,9 @@ static int sf_reg_release(struct inode *
         return 0;
  }

-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
+static vm_fault_t sf_reg_fault(struct vm_fault *vmf)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
  static int sf_reg_fault(struct vm_fault *vmf)
  #elif LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25)
  static int sf_reg_fault(struct vm_area_struct *vma, struct vm_fault *vmf)

Larry




More information about the vbox-dev mailing list