Messages in this thread Patch in this message | | | From | Schspa Shi <> | Subject | [PATCH] KVM: arm64: Fix 64 bit mmio handle | Date | Fri, 1 Jul 2022 00:12:20 +0800 |
| |
If the len is 8 bytes, we can't get the correct sign extend for be system.
Fix the mask type len and the comparison of length.
Signed-off-by: Schspa Shi <schspa@gmail.com> --- arch/arm64/kvm/mmio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kvm/mmio.c b/arch/arm64/kvm/mmio.c index 3dd38a151d2a6..0692f8b18f35c 100644 --- a/arch/arm64/kvm/mmio.c +++ b/arch/arm64/kvm/mmio.c @@ -81,8 +81,8 @@ unsigned long kvm_mmio_read_buf(const void *buf, unsigned int len) int kvm_handle_mmio_return(struct kvm_vcpu *vcpu) { unsigned long data; + unsigned long mask; unsigned int len; - int mask; /* Detect an already handled MMIO return */ if (unlikely(!vcpu->mmio_needed)) @@ -97,7 +97,7 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu) data = kvm_mmio_read_buf(run->mmio.data, len); if (kvm_vcpu_dabt_issext(vcpu) && - len < sizeof(unsigned long)) { + len <= sizeof(unsigned long)) { mask = 1U << ((len * 8) - 1); data = (data ^ mask) - mask; } -- 2.37.0
| |