Richard Henderson <r...@twiddle.net> writes: > On 03/07/2017 02:57 AM, Alex Bennée wrote: >> cs->exception_index = intno; >> env->error_code = error_code; >> env->exception_is_int = is_int; >> env->exception_next_eip = env->eip + next_eip_addend; >> + env->exception_retaddr = retaddr; >> cpu_loop_exit_restore(cs, retaddr); > > Since you've restored state here, I don't see that you need to save > the retaddr at all ... > >> + if (!env->exception_is_int) { >> + cpu_svm_check_intercept_param(env, >> + SVM_EXIT_EXCP_BASE + >> cs->exception_index, >> + env->error_code, >> + env->exception_retaddr); >> + cs->exception_index = check_exception(env, cs->exception_index, >> + &env->error_code, >> + env->exception_retaddr); >> + } else { >> + cpu_svm_check_intercept_param(env, SVM_EXIT_SWINT, 0, >> + env->exception_retaddr); >> + } > > ... simply pass zero here instead. > > But do I see correctly from the thread that we don't have a reproducer?
Yeah - I've nabbed Paolo's much cleaner and more informed fix and that seems fine. -- Alex Bennée