On 16.04.2025 15:52, Jan Beulich wrote: > On 15.04.2025 23:52, Manuel Andreas wrote: >> my fuzzing infrastructure discovered that an assert in >> x86_emulate_wrapper is able to be triggered by an HVM domain executing a >> specially crafted repeating movs instruction. >> >> Specifically, if the emulation of the rep movs instruction triggers an >> exception (e.g. by accessing invalid memory after some amount of >> iterations), the emulation will be halted at that point. >> However, the instruction manual requires that _some_ register state >> (namely the updated value of rcx) shall be commited, whereas the >> instruction pointer needs to be rolled back to point to the address of >> the instruction itself. The assert checks for the latter. Problematic is >> the fact that for these type of repeating instructions, Xen seems to >> eventually just commit all register state when it encounters an exception: > > If my analysis is correct, none of this matters here; the core emulator > is working correctly. Hence also why the in-tree fuzzer wouldn't have > caught it. Would you please give the patch a try that I just sent, with > Cc to you (sorry, the list archive didn't pick it up yet, hence no link)?
https://lists.xen.org/archives/html/xen-devel/2025-04/msg01283.html