summaryrefslogtreecommitdiff
path: root/arch/arm64/kvm/vgic/vgic-kvm-device.c
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2022-07-05 12:16:44 +0300
committerMarc Zyngier <maz@kernel.org>2022-07-17 13:55:33 +0300
commit38cf0bb7625a58625efeef9ec944671464ff7430 (patch)
tree0eee5bb5ce8d55f30863acc1ff43093f98fa082e /arch/arm64/kvm/vgic/vgic-kvm-device.c
parent71c3c7753c722b8b10566dcdf1ff0a2eaf33a9c1 (diff)
downloadlinux-38cf0bb7625a58625efeef9ec944671464ff7430.tar.xz
KVM: arm64: vgic-v3: Use u32 to manage the line level from userspace
Despite the userspace ABI clearly defining the bits dealt with by KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO as a __u32, the kernel uses a u64. Use a u32 to match the userspace ABI, which will subsequently lead to some simplifications. Reviewed-by: Reiji Watanabe <reijiw@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'arch/arm64/kvm/vgic/vgic-kvm-device.c')
-rw-r--r--arch/arm64/kvm/vgic/vgic-kvm-device.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm64/kvm/vgic/vgic-kvm-device.c b/arch/arm64/kvm/vgic/vgic-kvm-device.c
index bf745c6ab2ea..f02294b9aef1 100644
--- a/arch/arm64/kvm/vgic/vgic-kvm-device.c
+++ b/arch/arm64/kvm/vgic/vgic-kvm-device.c
@@ -570,10 +570,14 @@ static int vgic_v3_attr_regs_access(struct kvm_device *dev,
info = (attr->attr & KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK) >>
KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT;
if (info == VGIC_LEVEL_INFO_LINE_LEVEL) {
+ if (is_write)
+ tmp32 = *reg;
intid = attr->attr &
KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK;
ret = vgic_v3_line_level_info_uaccess(vcpu, is_write,
- intid, reg);
+ intid, &tmp32);
+ if (!is_write)
+ *reg = tmp32;
} else {
ret = -EINVAL;
}