diff options
-rw-r--r-- | .SRCINFO | 14 | ||||
-rw-r--r-- | PKGBUILD | 30 | ||||
-rw-r--r-- | config | 8 | ||||
-rw-r--r-- | vmmon.patch | 94 | ||||
-rw-r--r-- | vmnet.patch | 330 |
5 files changed, 26 insertions, 450 deletions
@@ -1,7 +1,7 @@ pkgbase = vmware-workstation-openrc pkgdesc = The industry standard for running multiple operating systems as virtual machines on a single Linux PC. Modified to use OpenRC. - pkgver = 16.2.4 - pkgrel = 1 + pkgver = 17.0.0 + pkgrel = 2 url = https://www.vmware.com/products/workstation-for-linux.html install = vmware-workstation.install arch = x86_64 @@ -30,7 +30,7 @@ pkgbase = vmware-workstation-openrc options = emptydirs backup = etc/vmware/config backup = etc/conf.d/vmware - source = https://download3.vmware.com/software/WKST-1624-LX/VMware-Workstation-Full-16.2.4-20089737.x86_64.bundle + source = https://download3.vmware.com/software/WKST-1700-LX/VMware-Workstation-Full-17.0.0-20800274.x86_64.bundle source = vmware-bootstrap source = vmware-vix-bootstrap source = config @@ -43,10 +43,10 @@ pkgbase = vmware-workstation-openrc source = Makefile source = vmmon.patch source = vmnet.patch - sha256sums = 2e46708db46630edc96cdb11514d5e338f5300c46f51a90132e9a4cd11c3f3c0 + sha256sums = 9014e87066f5b60e62f9dbd698e68f7cf507c6b59c5fcfe86de2aa44647e9910 sha256sums = 67edc40e39686281f5101ced1a250648ae32e4cd5dffe4fd47bc3c7aed929d50 sha256sums = da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141 - sha256sums = 83a9daa713e0a419367b9702f0be8bdeb79fd16214daf6e8f5954043e8720ab8 + sha256sums = bcf24ce469527844c60f8fd50fda61a6b65cc326ff6bf026d5ae0576cf749c2c sha256sums = f2c9272dfa1e3de1de5f5545989e6e3d9f400084decaa5504559a20209648329 sha256sums = b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f sha256sums = 6114cab1760bd1393de2ed16d9bc6f01c013a706e1b0a0a7fc34156d6adb7ae9 @@ -54,7 +54,7 @@ pkgbase = vmware-workstation-openrc sha256sums = 452c1bfebac52f4808ba5f4bf2fc3eae9858f8745d60c13d3c46e7550a3e1eb1 sha256sums = 10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e sha256sums = 273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac - sha256sums = 31ed2d3766d3f3bd3b23222f67bcd39ff8edbbe8ff13fbe7b1fa565c8ed61144 - sha256sums = 755ceab482df270eeac783228098ccb9ea0e1967c60891405be7730ee6123075 + sha256sums = 1060b5d45caeda5119b220fab4e1ece398af34d75131139a5dc6f74ee06672c3 + sha256sums = 7c3b6a7871b19e31fafdcc2631751dd9569196740d8e7c2026653d155c0c8da0 pkgname = vmware-workstation-openrc @@ -15,10 +15,10 @@ #PKGEXT=.pkg.tar pkgname=vmware-workstation-openrc -pkgver=16.2.4 -_buildver=20089737 +pkgver=17.0.0 +_buildver=20800274 _pkgver=${pkgver}_${_buildver} -pkgrel=1 +pkgrel=2 pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC. Modified to use OpenRC.' arch=(x86_64) url='https://www.vmware.com/products/workstation-for-linux.html' @@ -77,11 +77,11 @@ source=( 'vmnet.patch' ) sha256sums=( - '2e46708db46630edc96cdb11514d5e338f5300c46f51a90132e9a4cd11c3f3c0' + '9014e87066f5b60e62f9dbd698e68f7cf507c6b59c5fcfe86de2aa44647e9910' '67edc40e39686281f5101ced1a250648ae32e4cd5dffe4fd47bc3c7aed929d50' 'da1698bf4e73ae466c1c7fc93891eba4b9c4581856649635e6532275dbfea141' - '83a9daa713e0a419367b9702f0be8bdeb79fd16214daf6e8f5954043e8720ab8' + 'bcf24ce469527844c60f8fd50fda61a6b65cc326ff6bf026d5ae0576cf749c2c' 'f2c9272dfa1e3de1de5f5545989e6e3d9f400084decaa5504559a20209648329' 'b94959a11b28e51b541321be0588190eb10825e9ff55cbd16eb01483a839a69f' @@ -91,8 +91,8 @@ sha256sums=( '10562d11d50edab9abc2b29c8948714edcb9b084f99b3766d07ddd21259e372e' '273d4357599a3e54259c78cc49054fef8ecfd2c2eda35cbcde3a53a62777a5ac' - '31ed2d3766d3f3bd3b23222f67bcd39ff8edbbe8ff13fbe7b1fa565c8ed61144' - '755ceab482df270eeac783228098ccb9ea0e1967c60891405be7730ee6123075' + '1060b5d45caeda5119b220fab4e1ece398af34d75131139a5dc6f74ee06672c3' + '7c3b6a7871b19e31fafdcc2631751dd9569196740d8e7c2026653d155c0c8da0' ) options=(!strip emptydirs) @@ -108,8 +108,8 @@ _isovirtualprinterimages=(Linux Windows) if [ -n "$_enable_macOS_guests" ]; then -_vmware_fusion_ver=12.2.4 -_vmware_fusion_buildver=20071091 +_vmware_fusion_ver=13.0.0 +_vmware_fusion_buildver=20802013 _vmware_fusion_ver_full=${_vmware_fusion_ver}_${_vmware_fusion_buildver} # List of VMware Fusion versions: https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/ @@ -121,12 +121,12 @@ makedepends+=( ) source+=( - "https://download3.vmware.com/software/FUS-${_vmware_fusion_ver//./}/VMware-Fusion-${_vmware_fusion_ver_full/_/-}_x86.dmg" + "https://download3.vmware.com/software/FUS-${_vmware_fusion_ver//./}/VMware-Fusion-${_vmware_fusion_ver_full/_/-}_universal.dmg" "unlocker.py" "efi-patches.txt" ) sha256sums+=( - '0b0516f4d5f70e759ae08a40d2e14f487c0b66d84ee467e38972ad013e1f6c7f' + '40bb9fbd4b2a18b48138a7fb3285d89187d50caab10506cff81b367b6edc858d' '8a61e03d0edbbf60c1c84a43aa87a6e950f82d2c71b968888f019345c2f684f3' '392c1effcdec516000e9f8ffc97f2586524d8953d3e7d6f2c5f93f2acd809d91' ) @@ -167,8 +167,8 @@ prepare() { --extract "$extracted_dir" if [ -n "$_enable_macOS_guests" ]; then - dmg2img -s VMware-Fusion-${_vmware_fusion_ver_full/_/-}_x86.dmg VMware-Fusion-${_vmware_fusion_ver_full/_/-}_x86.iso - 7z e -y VMware-Fusion-${_vmware_fusion_ver_full/_/-}_x86.iso VMware\ Fusion/VMware\ Fusion.app/Contents/Library/isoimages/\* -o"fusion-isoimages" > /dev/null 2>&1 || true + dmg2img -s VMware-Fusion-${_vmware_fusion_ver_full/_/-}_universal.dmg VMware-Fusion-${_vmware_fusion_ver_full/_/-}.iso + 7z e -y VMware-Fusion-${_vmware_fusion_ver_full/_/-}.iso VMware\ Fusion/VMware\ Fusion.app/Contents/Library/isoimages/\* -o"fusion-isoimages" > /dev/null 2>&1 || true sed -i -e "s|/usr/lib/vmware/|${pkgdir}/usr/lib/vmware/|" "$srcdir/unlocker.py" fi @@ -218,7 +218,7 @@ package() { "$pkgdir/usr/lib/vmware/setup" cp -r \ - vmware-vix-lib-Workstation1600/lib/Workstation-16.0.0 \ + vmware-vix-lib-Workstation1700/lib/Workstation-17.0.0 \ vmware-vix-core/{lib/*,vixwrapper-config.txt} \ "$pkgdir/usr/lib/vmware-vix" @@ -403,7 +403,7 @@ if [ -n "$_enable_macOS_guests" ]; then done msg "Patching EFI firmwares to disable macOS server checking" - _efi_arch=(32 64) + _efi_arch=("32" "64" "20-32" "20-64") for arch in ${_efi_arch[@]} do uefipatch "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" "$srcdir/efi-patches.txt" -o "$pkgdir/usr/lib/vmware/roms/EFI${arch}.ROM" > /dev/null @@ -1,9 +1,9 @@ .encoding = "UTF-8" product.name = "VMware Player" -product.version = "16.0.0" -product.buildNumber = "16894299" -workstation.product.version = "16.0.0" -player.product.version = "16.0.0" +product.version = "17.0.0" +product.buildNumber = "20800274" +workstation.product.version = "17.0.0" +player.product.version = "17.0.0" vix.config.version = "1" bindir = "/usr/bin" libdir = "/usr/lib/vmware" diff --git a/vmmon.patch b/vmmon.patch index 167c16fdcfdd..f2e32d6d0270 100644 --- a/vmmon.patch +++ b/vmmon.patch @@ -12,97 +12,3 @@ # Header directory for the running kernel ifdef LINUXINCLUDE -From 9a6a17fe0bc6d1ab9e0e0dfa8d587b12a21cd49e Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Sun, 17 Oct 2021 17:06:26 +0200 -Subject: [PATCH] modules: include <linux/stdarg.h> when available - -Workstation/Player code changes between 16.1.2 and 16.2.0 added some -includes of <stdarg.h> which is interpreted as regular (userspace) header -file in /usr/include. Shortly before that, mainline commit c0891ac15f04 -("isystem: ship and use stdarg.h") added minimalistic kernel version of -stdarg.h to avoid including userspace headers from kernel code. As the -kernel version is sometimes included via other header files, build against -5.15 kernel results in a lot of warnings (about redefined va_* macros). - -Include <stdarg.h> when building against kernel < 5.15 and <linux/stdarg.h> -when building against kernel >= 5.15. ---- - vmmon-only/include/vm_assert.h | 4 ++++ - vmnet-only/vm_assert.h | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/vmmon-only/include/vm_assert.h b/vmmon-only/include/vm_assert.h -index 4a69dcc..2817a08 100644 ---- a/vmmon-only/include/vm_assert.h -+++ b/vmmon-only/include/vm_assert.h -@@ -40,7 +40,11 @@ - - // XXX not necessary except some places include vm_assert.h improperly - #include "vm_basic_types.h" -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) - #include <stdarg.h> -+#else -+#include <linux/stdarg.h> -+#endif - - #ifdef __cplusplus - extern "C" { -From 4232f780eb114f22498f3274eaeef81d8c63f2ab Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Tue, 9 Nov 2021 09:01:57 +0100 -Subject: [PATCH] modules: fix stddef.h include - -After mainline commit 04e85bbf71c9 ("isystem: delete global -isystem -compile option") in 5.16-rc1, vm_basic_types.h in both vmmon and vmnet -does not find (userspace) stddef.h any more. As it should not include this -header anyway, fix the include directives to include stddef.h from kernel. - -Kernel version of stddef.h has been available since the beginning of git so -that it is safe to include it regardless of kernel version. ---- - vmmon-only/include/vm_basic_defs.h | 2 +- - vmnet-only/vm_basic_defs.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/vmmon-only/include/vm_basic_defs.h b/vmmon-only/include/vm_basic_defs.h -index 0ec30b3..b920e2d 100644 ---- a/vmmon-only/include/vm_basic_defs.h -+++ b/vmmon-only/include/vm_basic_defs.h -@@ -51,7 +51,7 @@ - * C90 7.17, C99 7.19, C11 7.19 - */ - #if !defined(VMKERNEL) --# include <stddef.h> -+# include <linux/stddef.h> - #else - /* - * Vmkernel's bogus __FreeBSD__ value causes gcc <stddef.h> to break. -From 16d490ae022d7fc4ca867971e20e2dcd59e6ca5a Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Mon, 4 Apr 2022 01:57:28 +0200 -Subject: [PATCH] vmmon: do not rely on HAVE_GET_KERNEL_NOFAULT - -Mainline commit 34737e269803 ("uaccess: add generic -__{get,put}_kernel_nofault") in 5.18-rc1 removes HAVE_GET_KERNEL_NOFAULT -macro as all architectures can use get_kernel_nofault() now. Check for -existence of __get_kernel_nofault() instead and add also a version check in -case it stops being a macro or is removed in the future. ---- - vmmon-only/linux/hostif.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c -index a21c300..b6326e9 100644 ---- a/vmmon-only/linux/hostif.c -+++ b/vmmon-only/linux/hostif.c -@@ -2356,7 +2356,8 @@ isVAReadable(VA r) // IN: - int ret; - - r = APICR_TO_ADDR(r, APICR_VERSION); --#ifdef HAVE_GET_KERNEL_NOFAULT -+#if defined(HAVE_GET_KERNEL_NOFAULT) || defined(__get_kernel_nofault) || \ -+ (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0)) - ret = get_kernel_nofault(dummy, (void *)r); - #else - { diff --git a/vmnet.patch b/vmnet.patch index 83e99fc4ce72..60fc5a12d86f 100644 --- a/vmnet.patch +++ b/vmnet.patch @@ -12,333 +12,3 @@ # Header directory for the running kernel ifdef LINUXINCLUDE ---- a/vmnet/userif.c -+++ b/vmnet/userif.c -# Fixing VMWare Player on Linux when using DHCP addresses: https://www.nikhef.nl/~janjust/vmnet/ -@@ -998,6 +998,9 @@ - userIf = (VNetUserIF *)port->jack.private; - hubJack = port->jack.peer; - -+ /* never send link down events */ -+ if (!linkUp) return 0; -+ - if (port->jack.state == FALSE || hubJack == NULL) { - return -EINVAL; - } -From 9a6a17fe0bc6d1ab9e0e0dfa8d587b12a21cd49e Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Sun, 17 Oct 2021 17:06:26 +0200 -Subject: [PATCH] modules: include <linux/stdarg.h> when available - -Workstation/Player code changes between 16.1.2 and 16.2.0 added some -includes of <stdarg.h> which is interpreted as regular (userspace) header -file in /usr/include. Shortly before that, mainline commit c0891ac15f04 -("isystem: ship and use stdarg.h") added minimalistic kernel version of -stdarg.h to avoid including userspace headers from kernel code. As the -kernel version is sometimes included via other header files, build against -5.15 kernel results in a lot of warnings (about redefined va_* macros). - -Include <stdarg.h> when building against kernel < 5.15 and <linux/stdarg.h> -when building against kernel >= 5.15. ---- - vmmon-only/include/vm_assert.h | 4 ++++ - vmnet-only/vm_assert.h | 4 ++++ - 2 files changed, 8 insertions(+) - -diff --git a/vmnet-only/vm_assert.h b/vmnet-only/vm_assert.h -index cf34446..430c74d 100644 ---- a/vmnet-only/vm_assert.h -+++ b/vmnet-only/vm_assert.h -@@ -40,7 +40,11 @@ - - // XXX not necessary except some places include vm_assert.h improperly - #include "vm_basic_types.h" -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) - #include <stdarg.h> -+#else -+#include <linux/stdarg.h> -+#endif - - #ifdef __cplusplus - extern "C" { -From 4232f780eb114f22498f3274eaeef81d8c63f2ab Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Tue, 9 Nov 2021 09:01:57 +0100 -Subject: [PATCH] modules: fix stddef.h include - -After mainline commit 04e85bbf71c9 ("isystem: delete global -isystem -compile option") in 5.16-rc1, vm_basic_types.h in both vmmon and vmnet -does not find (userspace) stddef.h any more. As it should not include this -header anyway, fix the include directives to include stddef.h from kernel. - -Kernel version of stddef.h has been available since the beginning of git so -that it is safe to include it regardless of kernel version. ---- - vmmon-only/include/vm_basic_defs.h | 2 +- - vmnet-only/vm_basic_defs.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/vmnet-only/vm_basic_defs.h b/vmnet-only/vm_basic_defs.h -index 0ec30b3..b920e2d 100644 ---- a/vmnet-only/vm_basic_defs.h -+++ b/vmnet-only/vm_basic_defs.h -@@ -51,7 +51,7 @@ - * C90 7.17, C99 7.19, C11 7.19 - */ - #if !defined(VMKERNEL) --# include <stddef.h> -+# include <linux/stddef.h> - #else - /* - * Vmkernel's bogus __FreeBSD__ value causes gcc <stddef.h> to break. -From 4af1a71978962f9805fe2e7e6ceb05c24f42c7f0 Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Tue, 11 Jan 2022 17:25:45 +0100 -Subject: [PATCH] vmnet: use accessors for net_device::dev_addr - -Mainline commit adeef3e32146 ("net: constify netdev->dev_addr") in 5.17-rc1 -makes dev_addr member of struct net_device const but accessors should be -used to modify it since 5.15 to make sure rbtree with hardware address list -is updated properly. - -Use dev_addr_set() and __dev_addr_set() in VNetNetifSetMAC() and -VNetNetIf_Create(). For kernels before 5.15 provide our own version of the -accessors. As SMAC_SetMac() only reads dev_addr, constify the corresponding -argument. ---- - vmnet-only/netif.c | 18 +++++++++++++++--- - vmnet-only/smac.c | 2 +- - vmnet-only/smac.h | 2 +- - 3 files changed, 17 insertions(+), 5 deletions(-) - -diff --git a/vmnet-only/netif.c b/vmnet-only/netif.c -index c70f7f4..8c3bbf8 100644 ---- a/vmnet-only/netif.c -+++ b/vmnet-only/netif.c -@@ -44,7 +44,6 @@ - #include "compat_netdevice.h" - #include "vmnetInt.h" - -- - /* - * Default min MTU value as defined by kernel versions >= 4.10.0. - * Use the same value for earlier versions of the kernel which do not -@@ -86,6 +85,19 @@ static int VNetNetIfProcRead(char *page, char **start, off_t off, - static int VNetNetifChangeMtu(struct net_device *dev, int new_mtu); - #endif - -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) -+static void -+__dev_addr_set(struct net_device *dev, const void *addr, size_t len) -+{ -+ memcpy(dev->dev_addr, addr, len); -+} -+ -+static void dev_addr_set(struct net_device *dev, const u8 *addr) -+{ -+ __dev_addr_set(dev, addr, dev->addr_len); -+} -+#endif -+ - - /* - *---------------------------------------------------------------------- -@@ -253,7 +265,7 @@ VNetNetIf_Create(char *devName, // IN: - - memset(&netIf->stats, 0, sizeof netIf->stats); - -- memcpy(dev->dev_addr, netIf->port.paddr, sizeof netIf->port.paddr); -+ __dev_addr_set(dev, netIf->port.paddr, sizeof(netIf->port.paddr)); - - if (register_netdev(dev) != 0) { - LOG(0, (KERN_NOTICE "%s: could not register network device\n", -@@ -532,7 +544,7 @@ VNetNetifSetMAC(struct net_device *dev, // IN: - return -EINVAL; - } - memcpy(netIf->port.paddr, addr->sa_data, dev->addr_len); -- memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); -+ dev_addr_set(dev, addr->sa_data); - return 0; - } - -diff --git a/vmnet-only/smac.c b/vmnet-only/smac.c -index f18be8a..7f38e7a 100644 ---- a/vmnet-only/smac.c -+++ b/vmnet-only/smac.c -@@ -4116,7 +4116,7 @@ SMAC_InitState(SMACState **ptr) // OUT: pointer to alloced/inited state - - void SMACINT - SMAC_SetMac(SMACState *state, // IN: state to update -- uint8 *mac) // IN: pointer to host adapter's MAC -+ const uint8 *mac) // IN: pointer to host adapter's MAC - { - VNETKdPrintCall(("SMAC_SetMac")); - ASSERT(state); -diff --git a/vmnet-only/smac.h b/vmnet-only/smac.h -index c8df9d2..f03fd3f 100644 ---- a/vmnet-only/smac.h -+++ b/vmnet-only/smac.h -@@ -72,7 +72,7 @@ Bool BridgeIPv4MatchAddrMAC(const ULONG ipAddr, const uint8 *mac); - void SMACINT - SMAC_InitState(struct SMACState **ptr); // IN: state to alloc/init - void SMACINT --SMAC_SetMac(struct SMACState *state, uint8 *mac); // IN: state, and host MAC -+SMAC_SetMac(struct SMACState *state, const uint8 *mac); // IN: state, and host MAC - void SMACINT - SMAC_CleanupState(struct SMACState **ptr); // IN: state to cleanup/dealloc - -From 409623bd4693afada659af82e823a6291f70797a Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Mon, 4 Apr 2022 02:05:17 +0200 -Subject: [PATCH] vmnet: use netif_rx() on newer kernels - -In mainline 5.18-rc1, commit baebdf48c360 ("net: dev: Makes sure netif_rx() -can be invoked in any context.") allows calling netif_rx() from any context -and commit 2655926aea9b ("net: Remove netif_rx_any_context() and -netif_rx_ni().") drops netif_rx_ni() as it is no longer needed. - -Replace calls of netif_rx_ni() in VNetBridgeReceiveFromVNet() and -VNetNetIfReceive() by netif_rx() when building against kernel 5.18 and -newer. ---- - vmnet-only/bridge.c | 2 +- - vmnet-only/compat_netdevice.h | 9 +++++++++ - vmnet-only/netif.c | 2 +- - 3 files changed, 11 insertions(+), 2 deletions(-) - -diff --git a/vmnet-only/bridge.c b/vmnet-only/bridge.c -index c84f8ee..d6bd3c4 100644 ---- a/vmnet-only/bridge.c -+++ b/vmnet-only/bridge.c -@@ -691,7 +691,7 @@ VNetBridgeReceiveFromVNet(VNetJack *this, // IN: jack - * not do it, or netif_rx_ni() will deadlock on the cli() lock --hpreg - */ - -- netif_rx_ni(clone); -+ compat_netif_rx_ni(clone); - # if LOGLEVEL >= 4 - do_gettimeofday(&vnetTime); - # endif -diff --git a/vmnet-only/compat_netdevice.h b/vmnet-only/compat_netdevice.h -index bb5001b..c6cc706 100644 ---- a/vmnet-only/compat_netdevice.h -+++ b/vmnet-only/compat_netdevice.h -@@ -196,4 +196,13 @@ typedef u32 compat_netdev_features_t; - #define compat_netif_trans_update(d) do { (d)->trans_start = jiffies; } while (0) - #endif - -+static inline int compat_netif_rx_ni(struct sk_buff *skb) -+{ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 18, 0) -+ return netif_rx(skb); -+#else -+ return netif_rx_ni(skb); -+#endif -+} -+ - #endif /* __COMPAT_NETDEVICE_H__ */ -diff --git a/vmnet-only/netif.c b/vmnet-only/netif.c -index 8c3bbf8..35256a0 100644 ---- a/vmnet-only/netif.c -+++ b/vmnet-only/netif.c -@@ -357,7 +357,7 @@ VNetNetIfReceive(VNetJack *this, // IN: jack - /* send to the host interface */ - skb->dev = netIf->dev; - skb->protocol = eth_type_trans(skb, netIf->dev); -- netif_rx_ni(skb); -+ compat_netif_rx_ni(skb); - netIf->stats.rx_packets++; - - return; -From e02b540ab528917c1afd7848ef64ca146a634994 Mon Sep 17 00:00:00 2001 -From: Michal Kubecek <mkubecek@suse.cz> -Date: Tue, 31 May 2022 23:29:42 +0200 -Subject: [PATCH] vmnet: open code csum_and_copy_to_user on kernel >= 5.19 - -Mainline commit 6308499b5e99 ("net: unexport csum_and_copy_{from,to}_user") -in 5.19-rc1 unexports csum_and_copy_to_user as no in-tree module is using -it. A clean solution would probably be rewriting the code to use iovec -iterator as csum_and_copy_to_iter() is still exported (or perhaps -skb_copy_and_csum_datagram() might be used instead). Anything like this -would be way too intrusive so it would have to wait for VMware developers. - -For now, use the simplest solution and replace the calls to -csum_and_copy_to_user() on 5.19 and newer with open coded implementation. -As the optimized x86 version uses csum_partial_copy_generic() which is not -exported on x86_64 either, copy the generic one from include/net/checksum.h -instead. This will be less efficient but hopefully the performace hit will -not be noticeable. ---- - vmnet-only/userif.c | 45 +++++++++++++++++++++++++++++++-------------- - 1 file changed, 31 insertions(+), 14 deletions(-) - -diff --git a/vmnet-only/userif.c b/vmnet-only/userif.c -index e99c436..2c5a24a 100644 ---- a/vmnet-only/userif.c -+++ b/vmnet-only/userif.c -@@ -87,6 +87,33 @@ extern unsigned int vnet_max_qlen; - # define skb_frag_off(frag) (frag)->page_offset - #endif - -+#if COMPAT_LINUX_VERSION_CHECK_LT(5, 10, 0) -+static inline unsigned int -+compat_csum_and_copy_to_user(const void *src, void __user *dst, int len, -+ int *err) -+{ -+ return csum_and_copy_to_user(src, dst, len, 0, err); -+} -+#else -+static inline unsigned int -+compat_csum_and_copy_to_user(const void *src, void __user *dst, int len, -+ int *err) -+{ -+ unsigned int csum; -+ -+#if COMPAT_LINUX_VERSION_CHECK_LT(5, 19, 0) -+ csum = csum_and_copy_to_user(src, dst, len); -+#else -+ csum = csum_partial(src, len, ~0U); -+ if (copy_to_user(dst, src, len)) -+ csum = 0; -+#endif /* 5.19 */ -+ -+ *err = (csum == 0 ? -EFAULT : 0); -+ return csum; -+} -+#endif /* 5.10 */ -+ - /* - *----------------------------------------------------------------------------- - * -@@ -561,12 +588,7 @@ VNetCsumCopyDatagram(const struct sk_buff *skb, // IN: skb to copy - return -EINVAL; - } - --#if COMPAT_LINUX_VERSION_CHECK_LT(5, 10, 0) -- csum = csum_and_copy_to_user(skb->data + offset, curr, len, 0, &err); --#else -- csum = csum_and_copy_to_user(skb->data + offset, curr, len); -- err = (csum == 0) ? -EFAULT : 0; --#endif -+ csum = compat_csum_and_copy_to_user(skb->data + offset, curr, len, &err); - if (err) { - return err; - } -@@ -580,14 +602,9 @@ VNetCsumCopyDatagram(const struct sk_buff *skb, // IN: skb to copy - const void *vaddr; - - vaddr = kmap(skb_frag_page(frag)); --#if COMPAT_LINUX_VERSION_CHECK_LT(5, 10, 0) -- tmpCsum = csum_and_copy_to_user(vaddr + skb_frag_off(frag), -- curr, skb_frag_size(frag), 0, &err); --#else -- tmpCsum = csum_and_copy_to_user(vaddr + skb_frag_off(frag), -- curr, skb_frag_size(frag)); -- err = (tmpCsum == 0) ? -EFAULT : 0; --#endif -+ tmpCsum = compat_csum_and_copy_to_user(vaddr + skb_frag_off(frag), -+ curr, skb_frag_size(frag), -+ &err); - kunmap(skb_frag_page(frag)); - - if (err) { |