preempt emulation miscompile fix
Hello,
I tracked down the reason of my kernel crashing builds with the latest kvm-userland package. It has taken a bit of time because with certain workloads this wouldn't crash. I've been testing stuff with preempt emulation enabled most of the time to be sure it worked (and to fix the host breakpoint too). This will fix it by importing the task struct before we define CONFIG_PREEMPT_NOTIFIERS. preempt.h is most certainly unnecessary but it's a good rule of thumb to include anything that uses CONFIG_PREEMPT_NOTIFIERS before defining it.
kernel/external-module-compat.h +6 -0
@@ -348,6 +348,12 @@ static inline unsigned long long __kvm_cmpxchg64(volatile void *ptr,#endif #ifndef CONFIG_PREEMPT_NOTIFIERS +/* +* Include sched|preempt.h before defining CONFIG_PREEMPT_NOTIFIERS to avoid +* a miscompile. +*/ +#include <linux/sched.h> +#include <linux/preempt.h> #define CONFIG_PREEMPT_NOTIFIERS #define CONFIG_PREEMPT_NOTIFIERS_COMPAT
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
Avi Kivity
AppliedQuoted 12 lines · Andrea Arcangeli
Hello,
I tracked down the reason of my kernel crashing builds with the latest kvm-userland package. It has taken a bit of time because with certain workloads this wouldn't crash. I've been testing stuff with preempt emulation enabled most of the time to be sure it worked (and to fix the host breakpoint too). This will fix it by importing the task struct before we define
CONFIG_PREEMPT_NOTIFIERS.preempt.his most certainly unnecessary but it's a good rule of thumb to include anything that usesCONFIG_PREEMPT_NOTIFIERSbefore defining it.
Applied, thanks.
Signature · 7 lines
error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/