[10/20] net/failsafe: fix a memory leak in error handling

Message ID tencent_2D910911DF98291EA953A388461D9BEFFE07@qq.com (mailing list archive)
State Changes Requested, archived
Delegated to: David Marchand
Headers
Series fix memory leaks in error handling |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Weiguo Li Feb. 22, 2022, 6:18 p.m. UTC
  When failed at 'rte_intr_efd_enable()', function returned and 'rxq' is
not freed. So free 'rxq' in error handling to avoid a memory leak. We
can't not use 'goto free_rxq' instead since 'rxq' has not assigned to
'dev->data->rx_queues[rx_queue_id]', thus 'fs_rx_queue_release(dev,...)'
will not work in this case.

Fixes: 9e0360aebf236d ("net/failsafe: register as Rx interrupt mode")

Signed-off-by: Weiguo Li <liwg06@foxmail.com>
---
 drivers/net/failsafe/failsafe_ops.c | 1 +
 1 file changed, 1 insertion(+)
  

Patch

diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 55e21d635c..4d4e2b248f 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -444,6 +444,7 @@  fs_rx_queue_setup(struct rte_eth_dev *dev,
 	rxq->sdev = PRIV(dev)->subs;
 	ret = rte_intr_efd_enable(intr_handle, 1);
 	if (ret < 0) {
+		rte_free(rxq);
 		fs_unlock(dev, 0);
 		return ret;
 	}