bus/ifpga: fix memory leaks in scan
authorRosen Xu <rosen.xu@intel.com>
Tue, 22 May 2018 10:26:17 +0000 (18:26 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 22 May 2018 17:16:25 +0000 (19:16 +0200)
There are some resource leaks in ifpga_scan_one.
This patch fixes it.

Coverity issue: 279459
Fixes: 05fa3d4a6539 ("bus/ifpga: add Intel FPGA bus library")
Cc: stable@dpdk.org
Signed-off-by: Rosen Xu <rosen.xu@intel.com>
drivers/bus/ifpga/ifpga_bus.c

index 675b9a3..db16173 100644 (file)
@@ -156,27 +156,29 @@ ifpga_scan_one(struct rte_rawdev *rawdev,
        if (rawdev->dev_ops &&
                rawdev->dev_ops->dev_start &&
                rawdev->dev_ops->dev_start(rawdev))
-               goto free_dev;
+               goto end;
 
        strlcpy(afu_pr_conf.bs_path, path, sizeof(afu_pr_conf.bs_path));
        if (rawdev->dev_ops->firmware_load &&
                rawdev->dev_ops->firmware_load(rawdev,
                                &afu_pr_conf)){
                IFPGA_BUS_ERR("firmware load error %d\n", ret);
-               goto free_dev;
+               goto end;
        }
        afu_dev->id.uuid.uuid_low  = afu_pr_conf.afu_id.uuid.uuid_low;
        afu_dev->id.uuid.uuid_high = afu_pr_conf.afu_id.uuid.uuid_high;
 
+       rte_kvargs_free(kvlist);
+       free(path);
        return afu_dev;
 
-free_dev:
-       free(afu_dev);
 end:
        if (kvlist)
                rte_kvargs_free(kvlist);
        if (path)
                free(path);
+       if (afu_dev)
+               free(afu_dev);
 
        return NULL;
 }