| From 53b16dd6ba5cf64ed147ac3523ec34651d553cb0 Mon Sep 17 00:00:00 2001 |
| From: Eric Auger <eric.auger@redhat.com> |
| Date: Mon, 5 Apr 2021 18:39:34 +0200 |
| Subject: KVM: arm64: Fix KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION read |
| |
| From: Eric Auger <eric.auger@redhat.com> |
| |
| commit 53b16dd6ba5cf64ed147ac3523ec34651d553cb0 upstream. |
| |
| 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. |
| |
| 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> |
| Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com> |
| Signed-off-by: Marc Zyngier <maz@kernel.org> |
| Link: https://lore.kernel.org/r/20210405163941.510258-3-eric.auger@redhat.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/arm64/kvm/vgic/vgic-kvm-device.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- 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 k |
| 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; |