--- /dev/null
+On 7/23/19 5:33 PM, S?rgio Basto wrote:
+> Hello,
+>
+> https://forums.virtualbox.org/viewtopic.php?f=3&t=93944
+>
+> have someone the solution ?
+
+Yes, I do. The MIT-licensed patch is posted below. After I finish here, I will
+also post this material on the VBox forum.
+
+The API changes are as follows:
+
+1. The for_ifa() and endfor_ifa() macros are removed. They are so simple that it
+is better to turn then into in-line code.
+
+2. Routine smp_call_function() is changed from type int to void.
+
+
+
+Index: VirtualBox-6.0.10/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+===================================================================
+--- VirtualBox-6.0.10.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
++++ VirtualBox-6.0.10/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
+@@ -2123,7 +2123,10 @@ static int vboxNetFltLinuxEnumeratorCall
+ #endif
+ if (in_dev != NULL)
+ {
+- for_ifa(in_dev) {
++ /* macros for_ifa() and endfor_ifa() disappear for kernel 5.3
++ * Code them directly */
++ 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 +2140,7 @@ static int vboxNetFltLinuxEnumeratorCall
+
+ pThis->pSwitchPort->pfnNotifyHostAddress(pThis->pSwitchPort,
+ /* :fAdded */ true, kIntNetAddrType_IPv4, &ifa->ifa_address);
+- } endfor_ifa(in_dev);
++ }
+ }
+
+ /*
+Index: VirtualBox-6.0.10/src/VBox/Runtime/r0drv/linux/mp-r0drv-linux.c
+===================================================================
+--- VirtualBox-6.0.10.orig/src/VBox/Runtime/r0drv/linux/mp-r0drv-linux.c
++++ VirtualBox-6.0.10/src/VBox/Runtime/r0drv/linux/mp-r0drv-linux.c
+@@ -283,12 +283,16 @@ RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnW
+ 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 */);
+-# else
++#else
+ int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* retry */, 0 /* wait */);
+-# endif
++#endif
++# if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ Assert(!rc); NOREF(rc);
++#endif
+ }
+ #endif
+
+@@ -326,7 +330,9 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER p
+ {
+ #ifdef CONFIG_SMP
+ IPRT_LINUX_SAVE_EFL_AC();
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ int rc;
++#endif
+ RTMPARGS Args;
+
+ RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
+@@ -337,14 +343,18 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER p
+ Args.cHits = 0;
+
+ RTThreadPreemptDisable(&PreemptState);
+-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
++#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)
+ rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
+-# else /* older kernels */
++#else /* older kernels */
+ rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
+-# endif /* older kernels */
++#endif /* older kernels */
+ RTThreadPreemptRestore(&PreemptState);
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0)
+ Assert(rc == 0); NOREF(rc);
++#endif
+ IPRT_LINUX_RESTORE_EFL_AC();
+ #else
+ RT_NOREF(pfnWorker, pvUser1, pvUser2);
+
+Larry
+