Hi Eric, The patch looks correct to me. kvm_vgic_addr() masks out all the bits except index from addr, so we don't need to do it in vgic_get_common_attr(): Reviewed-by: Alexandru Elisei <alexandru.elisei@xxxxxxx> One nitpick below. On 12/12/20 6:50 PM, Eric Auger wrote: > The doc says: > "The characteristics of a specific redistributor region can > be read by presetting the index field in the attr data. > Only valid for KVM_DEV_TYPE_ARM_VGIC_V3" > > Unfortunately the existing code fails to read the input attr data > and thus the index always is 0. addr is allocated on the stack, I don't think it will always be 0. Thanks, Alex > > Fixes: 04c110932225 ("KVM: arm/arm64: Implement KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION") > Cc: stable@xxxxxxxxxxxxxxx#v4.17+ > Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> > --- > arch/arm64/kvm/vgic/vgic-kvm-device.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/arm64/kvm/vgic/vgic-kvm-device.c b/arch/arm64/kvm/vgic/vgic-kvm-device.c > index 44419679f91a..2f66cf247282 100644 > --- a/arch/arm64/kvm/vgic/vgic-kvm-device.c > +++ b/arch/arm64/kvm/vgic/vgic-kvm-device.c > @@ -226,6 +226,9 @@ static int vgic_get_common_attr(struct kvm_device *dev, > u64 addr; > unsigned long type = (unsigned long)attr->attr; > > + if (copy_from_user(&addr, uaddr, sizeof(addr))) > + return -EFAULT; > + > r = kvm_vgic_addr(dev->kvm, type, &addr, false); > if (r) > return (r == -ENODEV) ? -ENXIO : r; _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm