diff mbox series

[1/7] virtio-iommu: Fix error handling in virtio_iommu_set_host_iova_ranges()

Message ID 20240626082727.1278530-2-eric.auger@redhat.com (mailing list archive)
State New, archived
Headers show
Series VIRTIO-IOMMU/HostIOMMUDevice: Fixes and page size mask rework | expand

Commit Message

Eric Auger June 26, 2024, 8:26 a.m. UTC
In case no IOMMUPciBus/IOMMUDevice are found we need to properly
set the error handle and return.

Fixes : Coverity CID 1549006
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Fixes: cf2647a76e ("virtio-iommu: Compute host reserved regions")
---
 hw/virtio/virtio-iommu.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Cédric Le Goater June 26, 2024, 10:39 a.m. UTC | #1
On 6/26/24 10:26 AM, Eric Auger wrote:
> In case no IOMMUPciBus/IOMMUDevice are found we need to properly
> set the error handle and return.
> 
> Fixes : Coverity CID 1549006
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> Fixes: cf2647a76e ("virtio-iommu: Compute host reserved regions")


Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.


> ---
>   hw/virtio/virtio-iommu.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
> index b9a7ddcd14..b708fb96fd 100644
> --- a/hw/virtio/virtio-iommu.c
> +++ b/hw/virtio/virtio-iommu.c
> @@ -543,10 +543,15 @@ static int virtio_iommu_set_host_iova_ranges(VirtIOIOMMU *s, PCIBus *bus,
>       int ret = -EINVAL;
>   
>       if (!sbus) {
> -        error_report("%s no sbus", __func__);
> +        error_setg(errp, "%s: no IOMMUPciBus found!", __func__);
> +        return ret;
>       }
>   
>       sdev = sbus->pbdev[devfn];
> +    if (!sdev) {
> +        error_setg(errp, "%s: no IOMMUDevice found!", __func__);
> +        return ret;
> +    }
>   
>       current_ranges = sdev->host_resv_ranges;
>
diff mbox series

Patch

diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c
index b9a7ddcd14..b708fb96fd 100644
--- a/hw/virtio/virtio-iommu.c
+++ b/hw/virtio/virtio-iommu.c
@@ -543,10 +543,15 @@  static int virtio_iommu_set_host_iova_ranges(VirtIOIOMMU *s, PCIBus *bus,
     int ret = -EINVAL;
 
     if (!sbus) {
-        error_report("%s no sbus", __func__);
+        error_setg(errp, "%s: no IOMMUPciBus found!", __func__);
+        return ret;
     }
 
     sdev = sbus->pbdev[devfn];
+    if (!sdev) {
+        error_setg(errp, "%s: no IOMMUDevice found!", __func__);
+        return ret;
+    }
 
     current_ranges = sdev->host_resv_ranges;