During PCI device close, any allocated memory needs to be free'd.
Currently, one of the free's is being called on an incorrect idxd_dmadev
struct member, namely 'batch_idx_ring'.

At device creation, memory is allocated for both 'batch_comp_ring' and
'batch_idx_ring' simultaeneously. Calling free only on 'batch_idx_ring'
meant the first half of this memory was not being free'd, leading to the
memleak.

This patch fixes this memleak by calling free on 'batch_comp_ring' which
will free the memory for both rings.

Fixes: 9449330a8458 ("dma/idxd: create dmadev instances on PCI probe")
Cc: sta...@dpdk.org
Cc: bruce.richard...@intel.com

Signed-off-by: Kevin Laatz <kevin.la...@intel.com>
Acked-by: Bruce Richardson <bruce.richard...@intel.com>
---
 drivers/dma/idxd/idxd_pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/idxd/idxd_pci.c b/drivers/dma/idxd/idxd_pci.c
index fb618d34b6..2c3b01cd2b 100644
--- a/drivers/dma/idxd/idxd_pci.c
+++ b/drivers/dma/idxd/idxd_pci.c
@@ -130,7 +130,7 @@ idxd_pci_dev_close(struct rte_dma_dev *dev)
 
        /* free device memory */
        IDXD_PMD_DEBUG("Freeing device driver memory");
-       rte_free(idxd->batch_idx_ring);
+       rte_free(idxd->batch_comp_ring);
        rte_free(idxd->desc_ring);
 
        /* if this is the last WQ on the device, disable the device and free
-- 
2.31.1

Reply via email to