summarylogtreecommitdiffstats
path: root/vmnet.patch
diff options
context:
space:
mode:
authorJean-Marc Lenoir2019-03-03 20:54:43 +0100
committerJean-Marc Lenoir2019-03-03 20:54:43 +0100
commitaf18c4140fc526fc6ec548679cf86c07981726f9 (patch)
tree4e34322d9c0aa5bbdda7ee8609bc78c928a2e295 /vmnet.patch
parente0bfe4903209b8bba2fef540f9aed263a5c6803c (diff)
downloadaur-af18c4140fc526fc6ec548679cf86c07981726f9.tar.gz
Compatibility with Linux 5.0
Diffstat (limited to 'vmnet.patch')
-rw-r--r--vmnet.patch115
1 files changed, 115 insertions, 0 deletions
diff --git a/vmnet.patch b/vmnet.patch
index 2640ec286868..8e99551a5ef2 100644
--- a/vmnet.patch
+++ b/vmnet.patch
@@ -120,3 +120,118 @@ index 0ee52ec..4e3b923 100644
# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
PF_NETLINK, _pri, &vmnet_proto, 1)
#elif defined(VMW_NETDEV_HAS_NET)
+From 8ba37a5023f939ba8d2e0d91b916ff442b1c18dd Mon Sep 17 00:00:00 2001
+From: Michal Kubecek <mkubecek@suse.cz>
+Date: Mon, 31 Dec 2018 00:05:42 +0100
+Subject: [PATCH] modules: replace SUBDIRS with M
+
+Since commit 0126be38d988 ("kbuild: announce removal of SUBDIRS if used")
+in v5.0-rc1, using SUBDIRS when building out of tree modules produces
+a deprecation warning. As M used to work since pretty much ever, use it
+unconditionally.
+---
+ vmmon-only/Makefile | 2 +-
+ vmnet-only/Makefile | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile
+index caab6b9..c2fc51f 100644
+--- a/vmnet-only/Makefile
++++ b/vmnet-only/Makefile
+@@ -121,7 +121,7 @@ prebuild:: ;
+ postbuild:: ;
+
+ $(DRIVER_KO): prebuild
+- $(MAKE) -C $(BUILD_DIR) SUBDIRS=$$PWD SRCROOT=$$PWD/$(SRCROOT) \
++ $(MAKE) -C $(BUILD_DIR) M=$$PWD SRCROOT=$$PWD/$(SRCROOT) \
+ MODULEBUILDDIR=$(MODULEBUILDDIR) modules
+ $(MAKE) -C $$PWD SRCROOT=$$PWD/$(SRCROOT) \
+ MODULEBUILDDIR=$(MODULEBUILDDIR) postbuild
+From c3fb5cda191137afddfdbd2f31bb4b15f9aeb3f2 Mon Sep 17 00:00:00 2001
+From: Michal Kubecek <mkubecek@suse.cz>
+Date: Mon, 31 Dec 2018 00:15:11 +0100
+Subject: [PATCH] vmmon: bring back the do_gettimeofday() helper
+
+The do_gettimeofday() helper was removed by commit e4b92b108c6c
+("timekeeping: remove obsolete time accessors") in v5.0-rc1. Bring it back
+for users in vmmon-only/linux/hostif.c.
+
+This feels like a quick and clumsy band aid to allow build with post-4.20
+kernels. On a closer look, the whole gymnastics around uptimeState and
+HostIFReadUptimeWork() with jiffies and wall time checking and correcting
+each other seems to be a workaround for an absence of high resolution
+monotonic time. Considering ktime_get_ts64() is available since 3.17 and
+before that, ktime_get_ts() since 2.6.17, perhaps the time has come to
+clean all this machinery up. But something like this would be beyond the
+scope of this repository.
+---
+ vmmon-only/include/compat_timekeeping32.h | 15 +++++++++++++++
+ vmmon-only/linux/driver.c | 1 +
+ vmmon-only/linux/hostif.c | 1 +
+ vmnet-only/bridge.c | 11 +++++++++++
+ 4 files changed, 28 insertions(+)
+ create mode 100644 vmmon-only/include/compat_timekeeping32.h
+
+diff --git a/vmnet-only/bridge.c b/vmnet-only/bridge.c
+index c569054..6e3249a 100644
+--- a/vmnet-only/bridge.c
++++ b/vmnet-only/bridge.c
+@@ -52,6 +52,17 @@
+ #include "vnetInt.h"
+ #include "smac.h"
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
++static inline void do_gettimeofday(struct timeval *tv)
++{
++ struct timespec64 now;
++
++ ktime_get_real_ts64(&now);
++ tv->tv_sec = now.tv_sec;
++ tv->tv_usec = now.tv_nsec / 1000;
++}
++#endif
++
+ #define VNET_BRIDGE_HISTORY 48
+
+ /*
+From 5db3c8a86f435e21f37a2acf386e2e52a1b42aa6 Mon Sep 17 00:00:00 2001
+From: Michal Kubecek <mkubecek@suse.cz>
+Date: Sat, 5 Jan 2019 01:54:57 +0100
+Subject: [PATCH] modules: handle access_ok() with two arguments
+
+Since commit 96d4f267e40f ("Remove 'type' argument from access_ok()
+function") in v5.0-rc1, the type argument of access_ok() was dropped.
+The same commit also dropped macros VERIFY_READ and VERIFY_WRITE so check
+for their existence on pre-5.0 kernels to allow build against kernels with
+this change backported.
+---
+ vmmon-only/linux/hostif.c | 8 +++++++-
+ vmnet-only/userif.c | 8 +++++++-
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/vmnet-only/userif.c b/vmnet-only/userif.c
+index a7aee04..eecd4f8 100644
+--- a/vmnet-only/userif.c
++++ b/vmnet-only/userif.c
+@@ -91,6 +91,12 @@ extern unsigned int vnet_max_qlen;
+ # define compat_kunmap(page) kunmap((page).p)
+ #endif
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0) && defined(VERIFY_WRITE)
++ #define write_access_ok(addr, size) access_ok(VERIFY_WRITE, addr, size)
++#else
++ #define write_access_ok(addr, size) access_ok(addr, size)
++#endif
++
+ /*
+ *-----------------------------------------------------------------------------
+ *
+@@ -148,7 +154,7 @@ VNetUserIfMapPtr(VA uAddr, // IN: pointer to user memory
+ struct page **p, // OUT: locked page
+ void **ptr) // OUT: kernel mapped pointer
+ {
+- if (!access_ok(VERIFY_WRITE, (void *)uAddr, size) ||
++ if (!write_access_ok((void *)uAddr, size) ||
+ (((uAddr + size - 1) & ~(PAGE_SIZE - 1)) !=
+ (uAddr & ~(PAGE_SIZE - 1)))) {
+ return -EINVAL;