summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2019-09-24 21:55:40 +0200
committerThomas Deutschmann <whissi@gentoo.org>2019-09-24 21:56:03 +0200
commitca27b4f4319e1955f399c9766bbd9199a2a4c3a2 (patch)
treeada755a556cdcee4fae92f43430412ad19816b39 /app-emulation/virtualbox-guest-additions
parentapp-emulation/virtualbox-modules: add linux-5.3+ compatibility (diff)
downloadgentoo-ca27b4f4319e1955f399c9766bbd9199a2a4c3a2.tar.gz
gentoo-ca27b4f4319e1955f399c9766bbd9199a2a4c3a2.tar.bz2
gentoo-ca27b4f4319e1955f399c9766bbd9199a2a4c3a2.zip
app-emulation/virtualbox-guest-additions: add linux-5.3+ compatibility
Closes: https://bugs.gentoo.org/694614 Package-Manager: Portage-2.3.76, Repoman-2.3.17 Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'app-emulation/virtualbox-guest-additions')
-rw-r--r--app-emulation/virtualbox-guest-additions/files/virtualbox-guest-additions-6.0.12-linux-5.3+-compatibility.patch75
-rw-r--r--app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.0.12.ebuild4
2 files changed, 79 insertions, 0 deletions
diff --git a/app-emulation/virtualbox-guest-additions/files/virtualbox-guest-additions-6.0.12-linux-5.3+-compatibility.patch b/app-emulation/virtualbox-guest-additions/files/virtualbox-guest-additions-6.0.12-linux-5.3+-compatibility.patch
new file mode 100644
index 000000000000..ad4b460c8142
--- /dev/null
+++ b/app-emulation/virtualbox-guest-additions/files/virtualbox-guest-additions-6.0.12-linux-5.3+-compatibility.patch
@@ -0,0 +1,75 @@
+https://bugs.gentoo.org/694614
+https://www.virtualbox.org/ticket/18911#comment:5
+
+--- a/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
++++ b/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+@@ -2123,7 +2123,9 @@ static int vboxNetFltLinuxEnumeratorCallback(struct notifier_block *self, unsign
+ #endif
+ if (in_dev != NULL)
+ {
+- for_ifa(in_dev) {
++ struct in_ifaddr *ifa;
++
++ for (ifa = in_dev->ifa_list; ifa; ifa = ifa->ifa_next) {
+ if (VBOX_IPV4_IS_LOOPBACK(ifa->ifa_address))
+ return NOTIFY_OK;
+
+@@ -2137,7 +2139,7 @@ static int vboxNetFltLinuxEnumeratorCallback(struct notifier_block *self, unsign
+
+ pThis->pSwitchPort->pfnNotifyHostAddress(pThis->pSwitchPort,
+ /* :fAdded */ true, kIntNetAddrType_IPv4, &ifa->ifa_address);
+- } endfor_ifa(in_dev);
++ }
+ }
+
+ /*
+--- a/Runtime/r0drv/linux/mp-r0drv-linux.c
++++ b/Runtime/r0drv/linux/mp-r0drv-linux.c
+@@ -283,12 +283,15 @@ RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2)
+ if (RTCpuSetCount(&OnlineSet) > 1)
+ {
+ /* Fire the function on all other CPUs without waiting for completion. */
+-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
++# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0)
++ smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */);
++# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+ int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */);
++ Assert(!rc); NOREF(rc);
+ # else
+ int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* retry */, 0 /* wait */);
+-# endif
+ Assert(!rc); NOREF(rc);
++# endif
+ }
+ #endif
+
+@@ -326,7 +329,6 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2)
+ {
+ #ifdef CONFIG_SMP
+ IPRT_LINUX_SAVE_EFL_AC();
+- int rc;
+ RTMPARGS Args;
+
+ RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
+@@ -337,14 +339,17 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2)
+ Args.cHits = 0;
+
+ RTThreadPreemptDisable(&PreemptState);
+-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
+- rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
++# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0)
++ smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
++# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
++ int rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
++ Assert(rc == 0); NOREF(rc);
+ # else /* older kernels */
+- rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
++ int rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
++ Assert(rc == 0); NOREF(rc);
+ # endif /* older kernels */
+ RTThreadPreemptRestore(&PreemptState);
+
+- Assert(rc == 0); NOREF(rc);
+ IPRT_LINUX_RESTORE_EFL_AC();
+ #else
+ RT_NOREF(pfnWorker, pvUser1, pvUser2);
diff --git a/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.0.12.ebuild b/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.0.12.ebuild
index efbf2bd2fdf9..9ac2195b1e09 100644
--- a/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.0.12.ebuild
+++ b/app-emulation/virtualbox-guest-additions/virtualbox-guest-additions-6.0.12.ebuild
@@ -71,6 +71,10 @@ src_prepare() {
eend
popd &>/dev/null || die
+ pushd src/VBox &>/dev/null || die
+ eapply "${FILESDIR}"/virtualbox-guest-additions-6.0.12-linux-5.3+-compatibility.patch
+ popd &>/dev/null || die
+
# PaX fixes (see bug #298988)
pushd "${VBOX_MOD_SRC_DIR}" &>/dev/null || die
eapply "${FILESDIR}"/vboxguest-6.0.6-log-use-c99.patch