bus/dpaa: fix resource leak
authorSunil Kumar Kori <sunil.kori@nxp.com>
Mon, 9 Apr 2018 10:22:44 +0000 (15:52 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 11 Apr 2018 22:20:30 +0000 (00:20 +0200)
Coverity issue: 268332
Fixes: 9d32ef0f5d61 ("bus/dpaa: support creating dynamic HW portal")
Cc: stable@dpdk.org
Signed-off-by: Sunil Kumar Kori <sunil.kori@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/bus/dpaa/base/qbman/qman_driver.c

index 66838d2..07b29d5 100644 (file)
@@ -160,6 +160,7 @@ struct qman_portal *fsl_qman_portal_create(void)
                                     &cpuset);
        if (ret) {
                error(0, ret, "pthread_getaffinity_np()");
+               kfree(q_pcfg);
                return NULL;
        }
 
@@ -168,12 +169,14 @@ struct qman_portal *fsl_qman_portal_create(void)
                if (CPU_ISSET(loop, &cpuset)) {
                        if (q_pcfg->cpu != -1) {
                                pr_err("Thread is not affine to 1 cpu\n");
+                               kfree(q_pcfg);
                                return NULL;
                        }
                        q_pcfg->cpu = loop;
                }
        if (q_pcfg->cpu == -1) {
                pr_err("Bug in getaffinity handling!\n");
+               kfree(q_pcfg);
                return NULL;
        }
 
@@ -183,6 +186,7 @@ struct qman_portal *fsl_qman_portal_create(void)
        ret = process_portal_map(&q_map);
        if (ret) {
                error(0, ret, "process_portal_map()");
+               kfree(q_pcfg);
                return NULL;
        }
        q_pcfg->channel = q_map.channel;
@@ -217,6 +221,7 @@ err2:
        close(q_fd);
 err1:
        process_portal_unmap(&q_map.addr);
+       kfree(q_pcfg);
        return NULL;
 }