You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-emulation/virtualbox-guest-additions/files/virtualbox-guest-additions-...

76 lines
2.9 KiB

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);