[PATCH v3 04/19] KVM: arm64: ITS: KVM_DEV_ARM_VGIC_GRP_ITS_REGS group
From: andre.przywara@arm.com (Andre Przywara)
Date: 2017-03-20 18:12:52
Also in:
kvm, kvmarm
From: andre.przywara@arm.com (Andre Przywara)
Date: 2017-03-20 18:12:52
Also in:
kvm, kvmarm
Hi Eric, On 06/03/17 11:34, Eric Auger wrote:
The ITS KVM device exposes a new KVM_DEV_ARM_VGIC_GRP_ITS_REGS group which allows the userspace to save/restore ITS registers. At this stage the get/set/has operations are not yet implemented. Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
--- arch/arm/include/uapi/asm/kvm.h | 1 + arch/arm64/include/uapi/asm/kvm.h | 1 + virt/kvm/arm/vgic/vgic-its.c | 36 +++++++++++++++++++++++++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-)
....
@@ -1520,10 +1544,20 @@ static int vgic_its_get_attr(struct kvm_device *dev, if (copy_to_user(uaddr, &addr, sizeof(addr))) return -EFAULT; break; + } + case KVM_DEV_ARM_VGIC_GRP_ITS_REGS: { + u64 __user *uaddr = (u64 __user *)(long)attr->addr; + u64 reg; + int ret; + + ret = vgic_its_attr_regs_access(dev, attr, ®, false); + if (ret) + return ret; + return put_user(reg, uaddr); + } default: return -ENXIO; } - }
And thanks for finding and fixing this nasty mishap. Fortunately C doesn't care about blocks in switch statements too much, so I think this works as intended (so it's not a "real" bug). Cheers, Andre.