[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] xen/arm64: entry: Actually skip do_trap_*() when an SError is triggered
commit 35c64c3dce01c2d0689a8c13240bf48a10cef783 Author: Julien Grall <jgrall@xxxxxxxxxx> AuthorDate: Tue Aug 6 13:48:15 2024 +0100 Commit: Julien Grall <julien@xxxxxxx> CommitDate: Tue Aug 13 21:58:24 2024 +0100 xen/arm64: entry: Actually skip do_trap_*() when an SError is triggered For SErrors, we support two configurations: * Every SErrors will result to a panic in Xen * We will forward SErrors triggered by a VM back to itself For the latter case, we want to skip the call to do_trap_*() because the PC was already adjusted. However, the alternative used to decide between the two configurations is inverted. This would result to the VM corrupting itself if: * x19 is non-zero in the panic case * advance PC too much in the second case Solve the issue by switch from alternative_if to alternative_if_not. Fixes: a458d3bd0d25 ("xen/arm: entry: Ensure the guest state is synced when receiving a vSError") Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx> --- xen/arch/arm/arm64/entry.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/arch/arm/arm64/entry.S b/xen/arch/arm/arm64/entry.S index 6251135ebd..fab10f8a0d 100644 --- a/xen/arch/arm/arm64/entry.S +++ b/xen/arch/arm/arm64/entry.S @@ -259,7 +259,7 @@ * apart. The easiest way is to duplicate the few instructions * that need to be skipped. */ - alternative_if SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT + alternative_if_not SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT cbnz x19, 1f mov x0, sp bl do_trap_\trap -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |