]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: nv: Allow coarse-grained trap combos to use complex traps
authorOliver Upton <oliver.upton@linux.dev>
Fri, 25 Oct 2024 18:23:41 +0000 (18:23 +0000)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 31 Oct 2024 19:00:39 +0000 (19:00 +0000)
KVM uses a sanity-check to avoid infinite recursion in trap combinations
that could potentially depend on itself. Narrow the scope of this sanity
check to the exact CGT IDs that correspond w/ trap combos, opening the
door to using 'complex' traps as part of a combination.

Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20241025182354.3364124-7-oliver.upton@linux.dev
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/emulate-nested.c

index 05b6435d02a97f11ad6bbe841f6b5b1e3ca0ac28..da7ab14e036dced1786ba2b7103d8d407233ba7a 100644 (file)
@@ -2021,7 +2021,8 @@ check_mcb:
                cgids = coarse_control_combo[id - __MULTIPLE_CONTROL_BITS__];
 
                for (int i = 0; cgids[i] != __RESERVED__; i++) {
-                       if (cgids[i] >= __MULTIPLE_CONTROL_BITS__) {
+                       if (cgids[i] >= __MULTIPLE_CONTROL_BITS__ &&
+                           cgids[i] < __COMPLEX_CONDITIONS__) {
                                kvm_err("Recursive MCB %d/%d\n", id, cgids[i]);
                                ret = -EINVAL;
                        }