net/ifc: fix unchecked return value

Message ID 20191126145931.61080-1-xiao.w.wang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: xiaolong ye
Headers
Series net/ifc: fix unchecked return value |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-compilation fail Compilie Testing issues
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Xiao Wang Nov. 26, 2019, 2:59 p.m. UTC
  It's possible that we fail to get the IOMMU group of ifcvf device, this
patch adds a check on the return value.

Coverity issue: 349894
Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")
Cc: stable@dpdk.org

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
---
 drivers/net/ifc/ifcvf_vdpa.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
  

Comments

Xiaolong Ye Nov. 26, 2019, 6:08 a.m. UTC | #1
On 11/26, Xiao Wang wrote:
>It's possible that we fail to get the IOMMU group of ifcvf device, this
>patch adds a check on the return value.
>
>Coverity issue: 349894
>Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")
>Cc: stable@dpdk.org
>
>Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
>---
> drivers/net/ifc/ifcvf_vdpa.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
>index 9c562def0..da4667ba5 100644
>--- a/drivers/net/ifc/ifcvf_vdpa.c
>+++ b/drivers/net/ifc/ifcvf_vdpa.c
>@@ -136,15 +136,19 @@ ifcvf_vfio_setup(struct ifcvf_internal *internal)
> 	struct rte_pci_device *dev = internal->pdev;
> 	char devname[RTE_DEV_NAME_MAX_LEN] = {0};
> 	int iommu_group_num;
>-	int i;
>+	int i, ret;
> 
> 	internal->vfio_dev_fd = -1;
> 	internal->vfio_group_fd = -1;
> 	internal->vfio_container_fd = -1;
> 
> 	rte_pci_device_name(&dev->addr, devname, RTE_DEV_NAME_MAX_LEN);
>-	rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname,
>+	ret = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname,
> 			&iommu_group_num);
>+	if (ret <= 0) {
>+		DRV_LOG(ERR, "%s failed to get IOMMU group", devname);
>+		return -1;
>+	}
> 
> 	internal->vfio_container_fd = rte_vfio_container_create();
> 	if (internal->vfio_container_fd < 0)
>-- 
>2.15.1
>

Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
  
Ferruh Yigit Nov. 26, 2019, 12:15 p.m. UTC | #2
On 11/26/2019 6:08 AM, Ye Xiaolong wrote:
> On 11/26, Xiao Wang wrote:
>> It's possible that we fail to get the IOMMU group of ifcvf device, this
>> patch adds a check on the return value.
>>
>> Coverity issue: 349894
>> Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
>> ---
>> drivers/net/ifc/ifcvf_vdpa.c | 8 ++++++--
>> 1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
>> index 9c562def0..da4667ba5 100644
>> --- a/drivers/net/ifc/ifcvf_vdpa.c
>> +++ b/drivers/net/ifc/ifcvf_vdpa.c
>> @@ -136,15 +136,19 @@ ifcvf_vfio_setup(struct ifcvf_internal *internal)
>> 	struct rte_pci_device *dev = internal->pdev;
>> 	char devname[RTE_DEV_NAME_MAX_LEN] = {0};
>> 	int iommu_group_num;
>> -	int i;
>> +	int i, ret;
>>
>> 	internal->vfio_dev_fd = -1;
>> 	internal->vfio_group_fd = -1;
>> 	internal->vfio_container_fd = -1;
>>
>> 	rte_pci_device_name(&dev->addr, devname, RTE_DEV_NAME_MAX_LEN);
>> -	rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname,
>> +	ret = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname,
>> 			&iommu_group_num);
>> +	if (ret <= 0) {
>> +		DRV_LOG(ERR, "%s failed to get IOMMU group", devname);
>> +		return -1;
>> +	}
>>
>> 	internal->vfio_container_fd = rte_vfio_container_create();
>> 	if (internal->vfio_container_fd < 0)
>> -- 
>> 2.15.1
>>
> 
> Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
> 

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
index 9c562def0..da4667ba5 100644
--- a/drivers/net/ifc/ifcvf_vdpa.c
+++ b/drivers/net/ifc/ifcvf_vdpa.c
@@ -136,15 +136,19 @@  ifcvf_vfio_setup(struct ifcvf_internal *internal)
 	struct rte_pci_device *dev = internal->pdev;
 	char devname[RTE_DEV_NAME_MAX_LEN] = {0};
 	int iommu_group_num;
-	int i;
+	int i, ret;
 
 	internal->vfio_dev_fd = -1;
 	internal->vfio_group_fd = -1;
 	internal->vfio_container_fd = -1;
 
 	rte_pci_device_name(&dev->addr, devname, RTE_DEV_NAME_MAX_LEN);
-	rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname,
+	ret = rte_vfio_get_group_num(rte_pci_get_sysfs_path(), devname,
 			&iommu_group_num);
+	if (ret <= 0) {
+		DRV_LOG(ERR, "%s failed to get IOMMU group", devname);
+		return -1;
+	}
 
 	internal->vfio_container_fd = rte_vfio_container_create();
 	if (internal->vfio_container_fd < 0)