Free the allocated device memory and interrupt handler on error scenarios. Coverity issue: 385377 Fixes: f29fb5caa135 ("bus/cdx: support MSI") Signed-off-by: Abhijit Gangurde <abhijit.gangu...@amd.com> --- v2: - Updated commit message
drivers/bus/cdx/cdx.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/bus/cdx/cdx.c b/drivers/bus/cdx/cdx.c index aef19682f4..f9526e08cc 100644 --- a/drivers/bus/cdx/cdx.c +++ b/drivers/bus/cdx/cdx.c @@ -208,8 +208,8 @@ cdx_scan_one(const char *dirname, const char *dev_name) ret = cdx_get_kernel_driver_by_path(filename, driver, sizeof(driver)); if (ret < 0) { CDX_BUS_ERR("Fail to get kernel driver"); - ret = -1; - goto err; + free(dev); + return -1; } /* Allocate interrupt instance for cdx device */ @@ -218,6 +218,7 @@ cdx_scan_one(const char *dirname, const char *dev_name) if (dev->intr_handle == NULL) { CDX_BUS_ERR("Failed to create interrupt instance for %s", dev->device.name); + free(dev); return -ENOMEM; } @@ -241,8 +242,8 @@ cdx_scan_one(const char *dirname, const char *dev_name) /* get device id */ snprintf(filename, sizeof(filename), "%s/device", dirname); if (eal_parse_sysfs_value(filename, &tmp) < 0) { - free(dev); - return -1; + ret = -1; + goto err; } dev->id.device_id = (uint16_t)tmp; @@ -251,6 +252,7 @@ cdx_scan_one(const char *dirname, const char *dev_name) return 0; err: + rte_intr_instance_free(dev->intr_handle); free(dev); return ret; } -- 2.25.1