From: Marc Zyngier Date: Tue, 25 Nov 2025 20:48:48 +0000 (+0000) Subject: KVM: arm64: Add endian casting to kvm_swap_s[12]_desc() X-Git-Tag: v6.19-rc1~103^2~1^2^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0fc8329ec98ea891a5e47821db6aee1d564bff6;p=thirdparty%2Fkernel%2Flinux.git KVM: arm64: Add endian casting to kvm_swap_s[12]_desc() Keep sparse quiet by explicitly casting endianness conversion when swapping S1 and S2 descriptors. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202511260246.JQDGsQKa-lkp@intel.com/ Closes: https://lore.kernel.org/oe-kbuild-all/202511260344.9XehvH5Q-lkp@intel.com/ Fixes: c59ca4b5b0c3f ("KVM: arm64: Implement HW access flag management in stage-1 SW PTW") Fixes: 39db933ba67f8 ("KVM: arm64: nv: Implement HW access flag management in stage-2 SW PTW") Signed-off-by: Marc Zyngier Link: https://msgid.link/20251125204848.1136383-1-maz@kernel.org Signed-off-by: Oliver Upton --- diff --git a/arch/arm64/kvm/at.c b/arch/arm64/kvm/at.c index f774a02d9393b..d25fef0f66e21 100644 --- a/arch/arm64/kvm/at.c +++ b/arch/arm64/kvm/at.c @@ -386,11 +386,11 @@ static int kvm_swap_s1_desc(struct kvm_vcpu *vcpu, u64 pa, u64 old, u64 new, struct s1_walk_info *wi) { if (wi->be) { - old = cpu_to_be64(old); - new = cpu_to_be64(new); + old = (__force u64)cpu_to_be64(old); + new = (__force u64)cpu_to_be64(new); } else { - old = cpu_to_le64(old); - new = cpu_to_le64(new); + old = (__force u64)cpu_to_le64(old); + new = (__force u64)cpu_to_le64(new); } return __kvm_at_swap_desc(vcpu->kvm, pa, old, new); diff --git a/arch/arm64/kvm/nested.c b/arch/arm64/kvm/nested.c index 88d7dfb44410c..911fc99ed99d9 100644 --- a/arch/arm64/kvm/nested.c +++ b/arch/arm64/kvm/nested.c @@ -224,11 +224,11 @@ static int swap_guest_s2_desc(struct kvm_vcpu *vcpu, phys_addr_t pa, u64 old, u6 struct s2_walk_info *wi) { if (wi->be) { - old = cpu_to_be64(old); - new = cpu_to_be64(new); + old = (__force u64)cpu_to_be64(old); + new = (__force u64)cpu_to_be64(new); } else { - old = cpu_to_le64(old); - new = cpu_to_le64(new); + old = (__force u64)cpu_to_le64(old); + new = (__force u64)cpu_to_le64(new); } return __kvm_at_swap_desc(vcpu->kvm, pa, old, new);