From 1a57c8d553a022a282cc466712bf7f4ce6de20a4 Mon Sep 17 00:00:00 2001 From: Kevin Laatz Date: Mon, 4 Jul 2022 16:27:50 +0100 Subject: [PATCH] dma/idxd: fix partial freeing in PCI close 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' simultaneously. 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: stable@dpdk.org Signed-off-by: Kevin Laatz Acked-by: Bruce Richardson --- 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