Hi Alexandru, On 1/6/21 6:12 PM, Alexandru Elisei wrote: > 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. I removed this statement in the commit message. Thanks! Eric > > 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; >