x86emul: always fill x86_insn_modrm()'s outputs The function is rather unlikely to be called for insns which don't have ModRM bytes, and hence addressing Coverity's recurring complaint of callers potentially consuming uninitialized data when they know that certain opcodes have ModRM bytes can be suppressed this way without unduly adding overhead to fast paths. Signed-off-by: Jan Beulich --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -8017,8 +8017,14 @@ x86_insn_modrm(const struct x86_emulate_ { check_state(state); - if ( state->modrm_mod > 3 ) + if ( unlikely(state->modrm_mod > 3) ) + { + if ( rm ) + *rm = ~0U; + if ( reg ) + *reg = ~0U; return -EINVAL; + } if ( rm ) *rm = state->modrm_rm;