KVM: x86: Terminate early if task_switch_16/32 failed
PATCH 1/2 KVM: x86: Terminate early if task_switch_16/32 failed
Stop the switch immediately if task_switch_16/32 returned an error. Only if that step succeeded, the switch should actually take place and update any register states.
Signed-off-by Jan Kiszka <[email protected]>
--- arch/x86/kvm/emulate.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
arch/x86/kvm/emulate.c +2 -0
@@ -2402,6 +2402,8 @@ static int emulator_do_task_switch(struct x86_emulate_ctxt *ctxt,else ret =task_switch_16 (ctxt, ops, tss_selector, old_tss_sel, old_tss_base, &next_tss_desc); +if (ret !=X86EMUL_CONTINUE ) +return ret;if (reason ==TASK_SWITCH_CALL || reason ==TASK_SWITCH_GATE ) ctxt->eflags = ctxt->eflags |X86_EFLAGS_NT ;