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 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,