aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <[email protected]>2017-04-26 16:56:26 +0200
committerRadim Krčmář <[email protected]>2017-06-06 14:43:16 +0200
commitbbaf0e2b1c1b4f88abd6ef49576f0efb1734eae5 (patch)
tree99fe3f8e3ff76c4837987b5c3d49c26a1b59a697
parent3c2993b8c6143d8a5793746a54eba8f86f95240f (diff)
kvm: async_pf: fix rcu_irq_enter() with irqs enabled
native_safe_halt enables interrupts, and you just shouldn't call rcu_irq_enter() with interrupts enabled. Reorder the call with the following local_irq_disable() to respect the invariant. Reported-by: Ross Zwisler <[email protected]> Cc: [email protected] Signed-off-by: Paolo Bonzini <[email protected]> Acked-by: Paul E. McKenney <[email protected]> Tested-by: Wanpeng Li <[email protected]> Signed-off-by: Radim Krčmář <[email protected]>
-rw-r--r--arch/x86/kernel/kvm.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
index da5c09789984..43e10d6fdbed 100644
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -161,8 +161,8 @@ void kvm_async_pf_task_wait(u32 token)
*/
rcu_irq_exit();
native_safe_halt();
- rcu_irq_enter();
local_irq_disable();
+ rcu_irq_enter();
}
}
if (!n.halted)