mirror of https://gitee.com/openkylin/linux.git
KVM: emulate: do not return X86EMUL_PROPAGATE_FAULT explicitly
Always get it through emulate_exception or emulate_ts. This ensures that the ctxt->exception fields have been populated. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d27aa7f15c
commit
592f085847
|
@ -1549,8 +1549,7 @@ static int __load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
|
|||
ctxt->ops->set_segment(ctxt, selector, &seg_desc, base3, seg);
|
||||
return X86EMUL_CONTINUE;
|
||||
exception:
|
||||
emulate_exception(ctxt, err_vec, err_code, true);
|
||||
return X86EMUL_PROPAGATE_FAULT;
|
||||
return emulate_exception(ctxt, err_vec, err_code, true);
|
||||
}
|
||||
|
||||
static int load_segment_descriptor(struct x86_emulate_ctxt *ctxt,
|
||||
|
@ -2723,8 +2722,7 @@ static int emulator_do_task_switch(struct x86_emulate_ctxt *ctxt,
|
|||
if (!next_tss_desc.p ||
|
||||
((desc_limit < 0x67 && (next_tss_desc.type & 8)) ||
|
||||
desc_limit < 0x2b)) {
|
||||
emulate_ts(ctxt, tss_selector & 0xfffc);
|
||||
return X86EMUL_PROPAGATE_FAULT;
|
||||
return emulate_ts(ctxt, tss_selector & 0xfffc);
|
||||
}
|
||||
|
||||
if (reason == TASK_SWITCH_IRET || reason == TASK_SWITCH_JMP) {
|
||||
|
@ -3016,7 +3014,7 @@ static int em_movbe(struct x86_emulate_ctxt *ctxt)
|
|||
ctxt->dst.val = swab64(ctxt->src.val);
|
||||
break;
|
||||
default:
|
||||
return X86EMUL_PROPAGATE_FAULT;
|
||||
BUG();
|
||||
}
|
||||
return X86EMUL_CONTINUE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue