Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: arm64: Inject UNDEF for a register trap without accessor

Configuring a register trap without specifying an accessor function is
abviously a bug. Instead of calling die() when that happens, let's be a
bit more helpful and print the register encoding. Also inject an
undefined instruction exception in the guest, similar to other unhandled
register accesses.

Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Tested-by: Fuad Tabba <tabba@google.com>
Reviewed-by: Fuad Tabba <tabba@google.com>
Link: https://msgid.link/20251216103053.47224-3-alexandru.elisei@arm.com
Signed-off-by: Oliver Upton <oupton@kernel.org>

authored by

Alexandru Elisei and committed by
Oliver Upton
aba963cb 145cc42f

+4 -1
+4 -1
arch/arm64/kvm/sys_regs.c
··· 4668 4668 * that we don't know how to handle. This certainly qualifies 4669 4669 * as a gross bug that should be fixed right away. 4670 4670 */ 4671 - BUG_ON(!r->access); 4671 + if (!r->access) { 4672 + bad_trap(vcpu, params, r, "register access"); 4673 + return; 4674 + } 4672 4675 4673 4676 /* Skip instruction if instructed so */ 4674 4677 if (likely(r->access(vcpu, params, r)))