aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/kernel-5.3-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/kernel-5.3-fix.patch')
-rw-r--r--nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/kernel-5.3-fix.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/kernel-5.3-fix.patch b/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/kernel-5.3-fix.patch
new file mode 100644
index 00000000000..0bdd9ec1056
--- /dev/null
+++ b/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/kernel-5.3-fix.patch
@@ -0,0 +1,50 @@
+--- a/vboxguest/r0drv/linux/mp-r0drv-linux.c
++++ a/vboxguest/r0drv/linux/mp-r0drv-linux.c
+@@ -283,12 +283,15 @@
+ 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 @@
+ {
+ #ifdef CONFIG_SMP
+ IPRT_LINUX_SAVE_EFL_AC();
+- int rc;
+ RTMPARGS Args;
+
+ RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER;
+@@ -337,14 +339,17 @@
+ 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);