From: Yunjian Wang Date: Tue, 15 Sep 2020 11:57:40 +0000 (+0800) Subject: bus/dpaa: fix fd check before close X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=c61dc9713666e8c707352ec7d4ec23e4c4d9fdc7;p=dpdk.git bus/dpaa: fix fd check before close The fd is possibly a negative value while it is passed as an argument to function "close". Fix the check to the fd. Fixes: b9c94167904f ("bus/dpaa: decouple FQ portal alloc and init") Cc: stable@dpdk.org Signed-off-by: Yunjian Wang Acked-by: Hemant Agrawal --- diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c index a466c698fc..6d9aaff164 100644 --- a/drivers/bus/dpaa/base/qbman/qman_driver.c +++ b/drivers/bus/dpaa/base/qbman/qman_driver.c @@ -142,7 +142,7 @@ struct qman_portal *fsl_qman_fq_portal_create(int *fd) struct qm_portal_config *q_pcfg; struct dpaa_ioctl_irq_map irq_map; struct dpaa_ioctl_portal_map q_map = {0}; - int q_fd = 0, ret; + int q_fd, ret; q_pcfg = kzalloc((sizeof(struct qm_portal_config)), 0); if (!q_pcfg) { @@ -179,7 +179,7 @@ struct qman_portal *fsl_qman_fq_portal_create(int *fd) if (!portal) { pr_err("Qman portal initialisation failed (%d)\n", q_pcfg->cpu); - goto err; + goto err_alloc; } irq_map.type = dpaa_portal_qman; @@ -188,9 +188,9 @@ struct qman_portal *fsl_qman_fq_portal_create(int *fd) *fd = q_fd; return portal; +err_alloc: + close(q_fd); err: - if (q_fd) - close(q_fd); process_portal_unmap(&q_map.addr); kfree(q_pcfg); return NULL;