[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v10 1/9] x86emul: address x86_insn_is_mem_{access, write}() omissions
On 25/05/2020 15:26, Jan Beulich wrote: > First of all explain in comments what the functions' purposes are. Then > make them actually match their comments. > > Note that fc6fa977be54 ("x86emul: extend x86_insn_is_mem_write() > coverage") didn't actually fix the function's behavior for {,V}STMXCSR: > Both are covered by generic code higher up in the function, due to > x86_decode_twobyte() already doing suitable adjustments. And VSTMXCSR > wouldn't have been covered anyway without a further X86EMUL_OPC_VEX() > case label. Keep the inner case label in a comment for reference. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > --- > v10: Move ARPL case to earlier switch() x86_insn_is_mem_write(). Make > group 5 handling actually work there. Drop VMPTRST case. Also > handle CLFLUSH*, CLWB, UDn, and remaining PREFETCH* in > x86_insn_is_mem_access(). > v9: New. > > --- a/xen/arch/x86/x86_emulate/x86_emulate.c > +++ b/xen/arch/x86/x86_emulate/x86_emulate.c > @@ -11474,25 +11474,87 @@ x86_insn_operand_ea(const struct x86_emu > return state->ea.mem.off; > } > > +/* > + * This function means to return 'true' for all supported insns with explicit > + * accesses to memory. This means also insns which don't have an explicit > + * memory operand (like POP), but it does not mean e.g. segment selector > + * loads, where the descriptor table access is considered an implicit one. > + */ > bool > x86_insn_is_mem_access(const struct x86_emulate_state *state, > const struct x86_emulate_ctxt *ctxt) > { > + if ( mode_64bit() && state->not_64bit ) > + return false; Is this path actually used? state->not_64bit ought to fail instruction decode, at which point we wouldn't have a valid state to be used here. Everything else looks ok, so Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |