Message ID | 20201212185010.26579-3-eric.auger@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM/ARM: Some vgic fixes and init sequence KVM selftests | expand |
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@arm.com> 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@vger.kernel.org#v4.17+ > Signed-off-by: Eric Auger <eric.auger@redhat.com> > --- > 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;
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@arm.com> > > 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@vger.kernel.org#v4.17+ >> Signed-off-by: Eric Auger <eric.auger@redhat.com> >> --- >> 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; >
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;
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. Fixes: 04c110932225 ("KVM: arm/arm64: Implement KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION") Cc: stable@vger.kernel.org#v4.17+ Signed-off-by: Eric Auger <eric.auger@redhat.com> --- arch/arm64/kvm/vgic/vgic-kvm-device.c | 3 +++ 1 file changed, 3 insertions(+)