On Sat, 11 Aug 2018, Matthew Wilcox wrote: > On Sat, Aug 11, 2018 at 12:28:24PM +0500, Mikhail Gavrilov wrote: > > Hi guys. > > I am catched new bug. It occured when I start virtual machine. > > Can anyone look? > > I'd suggest that st->lock should be taken with irqsave. Like this; > please test. That should fix it, but that's suboptimal because that's an extra safe/restore in switch_to(). So we better disable interrupts at the other call site. Patch below. Thanks, tglx 8<------------------ diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 30ca2d1a9231..07ce27082a40 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -416,9 +416,11 @@ static __always_inline void __speculative_store_bypass_update(unsigned long tifn void speculative_store_bypass_update(unsigned long tif) { - preempt_disable(); + unsigned long flags; + + local_irq_save(flags); __speculative_store_bypass_update(tif); - preempt_enable(); + local_irq_restore(flags); } void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p,