diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2019-09-24 21:55:40 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2019-09-24 21:56:03 +0200 |
commit | ca27b4f4319e1955f399c9766bbd9199a2a4c3a2 (patch) | |
tree | ada755a556cdcee4fae92f43430412ad19816b39 /app-emulation/virtualbox-guest-additions | |
parent | app-emulation/virtualbox-modules: add linux-5.3+ compatibility (diff) | |
download | gentoo-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')
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 |