]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc()
authorZenghui Yu (Huawei) <zenghui.yu@linux.dev>
Tue, 17 Mar 2026 11:57:48 +0000 (19:57 +0800)
committerMarc Zyngier <maz@kernel.org>
Tue, 17 Mar 2026 13:40:00 +0000 (13:40 +0000)
Using "(u64 __user *)hva + offset" to get the virtual addresses of S1/S2
descriptors looks really wrong, if offset is not zero. What we want to get
for swapping is hva + offset, not hva + offset*8. ;-)

Fix it.

Fixes: f6927b41d573 ("KVM: arm64: Add helper for swapping guest descriptor")
Signed-off-by: Zenghui Yu (Huawei) <zenghui.yu@linux.dev>
Link: https://patch.msgid.link/20260317115748.47332-1-zenghui.yu@linux.dev
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: stable@vger.kernel.org
arch/arm64/kvm/at.c

index c5c5644b1878e78f87b69679831d93d0f6d5f52e..a024d9a770dc7419514b2b93f8dc9a3ec52cdf38 100644 (file)
@@ -1753,7 +1753,7 @@ int __kvm_at_swap_desc(struct kvm *kvm, gpa_t ipa, u64 old, u64 new)
        if (!writable)
                return -EPERM;
 
-       ptep = (u64 __user *)hva + offset;
+       ptep = (void __user *)hva + offset;
        if (cpus_have_final_cap(ARM64_HAS_LSE_ATOMICS))
                r = __lse_swap_desc(ptep, old, new);
        else