public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc()
@ 2026-03-17 11:57 Zenghui Yu
  2026-03-17 13:37 ` Marc Zyngier
  2026-03-17 13:44 ` Marc Zyngier
  0 siblings, 2 replies; 3+ messages in thread
From: Zenghui Yu @ 2026-03-17 11:57 UTC (permalink / raw)
  To: kvmarm, linux-arm-kernel
  Cc: maz, oupton, joey.gouly, suzuki.poulose, Zenghui Yu (Huawei)

From: "Zenghui Yu (Huawei)" <zenghui.yu@linux.dev>

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>
---
 arch/arm64/kvm/at.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/kvm/at.c b/arch/arm64/kvm/at.c
index c5c5644b1878..a024d9a770dc 100644
--- a/arch/arm64/kvm/at.c
+++ b/arch/arm64/kvm/at.c
@@ -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
-- 
2.53.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc()
  2026-03-17 11:57 [PATCH] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc() Zenghui Yu
@ 2026-03-17 13:37 ` Marc Zyngier
  2026-03-17 13:44 ` Marc Zyngier
  1 sibling, 0 replies; 3+ messages in thread
From: Marc Zyngier @ 2026-03-17 13:37 UTC (permalink / raw)
  To: Zenghui Yu; +Cc: kvmarm, linux-arm-kernel, oupton, joey.gouly, suzuki.poulose

On Tue, 17 Mar 2026 11:57:48 +0000,
Zenghui Yu <zenghui.yu@linux.dev> wrote:
> 
> From: "Zenghui Yu (Huawei)" <zenghui.yu@linux.dev>
> 
> 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>
> ---
>  arch/arm64/kvm/at.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/kvm/at.c b/arch/arm64/kvm/at.c
> index c5c5644b1878..a024d9a770dc 100644
> --- a/arch/arm64/kvm/at.c
> +++ b/arch/arm64/kvm/at.c
> @@ -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

Holy crap! How did we miss that???

Thanks a lot for spotting it, I'll queue that now.

	M.

-- 
Without deviation from the norm, progress is not possible.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc()
  2026-03-17 11:57 [PATCH] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc() Zenghui Yu
  2026-03-17 13:37 ` Marc Zyngier
@ 2026-03-17 13:44 ` Marc Zyngier
  1 sibling, 0 replies; 3+ messages in thread
From: Marc Zyngier @ 2026-03-17 13:44 UTC (permalink / raw)
  To: kvmarm, linux-arm-kernel, Zenghui Yu; +Cc: oupton, joey.gouly, suzuki.poulose

On Tue, 17 Mar 2026 19:57:48 +0800, Zenghui Yu wrote:
> 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.
> 
> 
> [...]

Applied to fixes, thanks!

[1/1] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc()
      commit: 0496acc42fb51eee040b5170cec05cec41385540

Cheers,

	M.
-- 
Without deviation from the norm, progress is not possible.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-03-17 13:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-17 11:57 [PATCH] KVM: arm64: Fix the descriptor address in __kvm_at_swap_desc() Zenghui Yu
2026-03-17 13:37 ` Marc Zyngier
2026-03-17 13:44 ` Marc Zyngier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox