]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
KVM: arm64: nv: fix VNCR TLB ASID match logic for non-Global entries
authorGeonha Lee <w1nsom3gna@korea.ac.kr>
Wed, 3 Sep 2025 15:04:21 +0000 (00:04 +0900)
committerOliver Upton <oliver.upton@linux.dev>
Wed, 10 Sep 2025 09:56:19 +0000 (02:56 -0700)
commit860b21c31d16f99b8c37b77993682f7bc8c211d7
tree8acbaf51540059739bd3cc81110be3a2de01adf9
parent34b8f4adedd54c19b0008914d2bb6311e1fb0d3b
KVM: arm64: nv: fix VNCR TLB ASID match logic for non-Global entries

kvm_vncr_tlb_lookup() is supposed to return true when the cached VNCR
TLB entry is valid for the current context. For non-Global entries, that
means the entry’s ASID must match the current ASID.

The current code returns true when the ASIDs do *not* match, which
inverts the logic. This is a potential vulnerability:

- Valid entries are ignored and we fall back to kvm_translate_vncr(),
  hurting performance.
- Mismatched entries are treated as permission faults (-EPERM) instead
  of triggering a fresh translation.
- This can also cause stale translations to be (wrongly) considered
  valid across address spaces.

Flip the predicate so non-Global entries only hit when ASIDs match.

Special credit to Team 0xB6 for reporting: DongHa Lee, Gyujeong Jin,
Daehyeon Ko, Geonha Lee, Hyungyu Oh, and Jaewon Yang.

Signed-off-by: Geonha Lee <w1nsom3gna@korea.ac.kr>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20250903150421.90752-1-w1nsom3gna@korea.ac.kr
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kvm/nested.c