]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: Inject UNDEF for a register trap without accessor
authorAlexandru Elisei <alexandru.elisei@arm.com>
Tue, 16 Dec 2025 10:30:51 +0000 (10:30 +0000)
committerOliver Upton <oupton@kernel.org>
Thu, 8 Jan 2026 20:56:17 +0000 (12:56 -0800)
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>
arch/arm64/kvm/sys_regs.c

index c8fd7c6a12a13f294ea4bf92dbd1b23f1c880c49..88a57ca36d96c0675fbdaba680645f57cf06261c 100644 (file)
@@ -4668,7 +4668,10 @@ static void perform_access(struct kvm_vcpu *vcpu,
         * that we don't know how to handle. This certainly qualifies
         * as a gross bug that should be fixed right away.
         */
-       BUG_ON(!r->access);
+       if (!r->access) {
+               bad_trap(vcpu, params, r, "register access");
+               return;
+       }
 
        /* Skip instruction if instructed so */
        if (likely(r->access(vcpu, params, r)))