File fixes_for_4.14.patch of Package virtualbox.openSUSE_Leap_42.2_Update

Patch VirtualBox source for changes in the kernel API for 4.14.x

The following issues are addressed:
	vfs_write() is replaced by kernel_write()
	symbol SKB_GSO_UDP is removed
	removal of gamma_set and gamma_get from struct drm_fb_helper_funcs
	removal of set_busid from struct drm_driver
	replacement of drm_pci_init() with pci_register_driver()
	replacement of drm_pci_exit() with pci_unregister_driver()
	removal of load_lut from struct drm_crtc_helper_func

This patch is licensed under the MIT license.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>

Index: VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
+++ VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxPci/linux/VBoxPci-linux.c
@@ -353,12 +353,17 @@ static void  vboxPciFileClose(struct fil
 static int vboxPciFileWrite(struct file* file, unsigned long long offset, unsigned char* data, unsigned int size)
 {
     int          ret;
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+
+    ret = kernel_write(file, data, size, &offset);
+#else
     mm_segment_t fs_save;
 
     fs_save = get_fs();
     set_fs(get_ds());
     ret = vfs_write(file, data, size, &offset);
     set_fs(fs_save);
+#endif
     if (ret < 0)
         printk(KERN_DEBUG "vboxPciFileWrite: error %d\n", ret);
 
Index: VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+++ VirtualBox-5.1.28/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
@@ -124,6 +124,10 @@ typedef struct VBOXNETFLTNOTIFIER *PVBOX
 #  define bstats stats
 #  define qstats stats
 # endif
+#endif 
+
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+#define SKB_GSO_UDP	0
 #endif
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)
@@ -722,9 +726,11 @@ static struct sk_buff *vboxNetFltLinuxSk
         case PDMNETWORKGSOTYPE_IPV4_TCP:
             fGsoType = SKB_GSO_TCPV4;
             break;
+# if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
         case PDMNETWORKGSOTYPE_IPV4_UDP:
             fGsoType = SKB_GSO_UDP;
             break;
+#endif
         case PDMNETWORKGSOTYPE_IPV6_TCP:
             fGsoType = SKB_GSO_TCPV6;
             break;
Index: VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_fb.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/Additions/linux/drm/vbox_fb.c
+++ VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_fb.c
@@ -381,6 +381,7 @@ out:
     return ret;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
 static void vbox_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
                    u16 blue, int regno)
 {
@@ -394,10 +395,13 @@ static void vbox_fb_gamma_get(struct drm
     *green = regno;
     *blue = regno;
 }
+#endif
 
 static struct drm_fb_helper_funcs vbox_fb_helper_funcs = {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
     .gamma_set = vbox_fb_gamma_set,
     .gamma_get = vbox_fb_gamma_get,
+#endif
     .fb_probe = vboxfb_create,
 };
 
Index: VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_drv.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/Additions/linux/drm/vbox_drv.c
+++ VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -281,7 +281,7 @@ static struct drm_driver driver =
     .lastclose = vbox_driver_lastclose,
     .master_set = vbox_master_set,
     .master_drop = vbox_master_drop,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(RHEL_73)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(RHEL_73)) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
     .set_busid = drm_pci_set_busid,
 #endif
 
@@ -326,11 +326,19 @@ static int __init vbox_init(void)
     if (vbox_modeset == 0)
         return -EINVAL;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
     return drm_pci_init(&driver, &vbox_pci_driver);
+#else
+    return pci_register_driver(&vbox_pci_driver);
+#endif
 }
 static void __exit vbox_exit(void)
 {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
     drm_pci_exit(&driver, &vbox_pci_driver);
+#else
+    pci_unregister_driver(&vbox_pci_driver);
+#endif
 }
 
 module_init(vbox_init);
Index: VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_mode.c
===================================================================
--- VirtualBox-5.1.28.orig/src/VBox/Additions/linux/drm/vbox_mode.c
+++ VirtualBox-5.1.28/src/VBox/Additions/linux/drm/vbox_mode.c
@@ -152,10 +152,12 @@ static int vbox_set_view(struct drm_crtc
     return 0;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
 static void vbox_crtc_load_lut(struct drm_crtc *crtc)
 {
 
 }
+#endif
 
 static void vbox_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
@@ -301,7 +303,9 @@ static const struct drm_crtc_helper_func
     .mode_set = vbox_crtc_mode_set,
     /* .mode_set_base = vbox_crtc_mode_set_base, */
     .disable = vbox_crtc_disable,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
     .load_lut = vbox_crtc_load_lut,
+#endif
     .prepare = vbox_crtc_prepare,
     .commit = vbox_crtc_commit,
 
openSUSE Build Service is sponsored by