Message ID | 1606784374-32388-1-git-send-email-wangyunjian@huawei.com |
---|---|
State | Accepted |
Delegated to: | Ajit Khaparde |
Headers | show |
Series |
|
Related | show |
Context | Check | Description |
---|---|---|
ci/Intel-compilation | success | Compilation OK |
ci/travis-robot | success | Travis build: passed |
ci/iol-mellanox-Performance | success | Performance Testing PASS |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/iol-intel-Functional | success | Functional Testing PASS |
ci/iol-testing | success | Testing PASS |
ci/iol-broadcom-Performance | success | Performance Testing PASS |
ci/iol-broadcom-Functional | success | Functional Testing PASS |
ci/checkpatch | success | coding style OK |
On Mon, Nov 30, 2020 at 5:00 PM wangyunjian <wangyunjian@huawei.com> wrote: > > From: Yunjian Wang <wangyunjian@huawei.com> > > We allocated memory for the 'buf' when sending message to HWRM, > but we don't free it when mapping the address to IO address > fails. It will lead to memory leak. > > Fixes: 19e6af01bb36 ("net/bnxt: support get/set EEPROM") > Cc: stable@dpdk.org > > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> Patch applied to dpdk-next-net-brcm. Thanks > --- > drivers/net/bnxt/bnxt_hwrm.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c > index 24c33185b4..ebbf504c0c 100644 > --- a/drivers/net/bnxt/bnxt_hwrm.c > +++ b/drivers/net/bnxt/bnxt_hwrm.c > @@ -4320,6 +4320,7 @@ int bnxt_get_nvram_directory(struct bnxt *bp, uint32_t len, uint8_t *data) > return -ENOMEM; > dma_handle = rte_malloc_virt2iova(buf); > if (dma_handle == RTE_BAD_IOVA) { > + rte_free(buf); > PMD_DRV_LOG(ERR, > "unable to map response address to physical memory\n"); > return -ENOMEM; > @@ -4354,6 +4355,7 @@ int bnxt_hwrm_get_nvram_item(struct bnxt *bp, uint32_t index, > > dma_handle = rte_malloc_virt2iova(buf); > if (dma_handle == RTE_BAD_IOVA) { > + rte_free(buf); > PMD_DRV_LOG(ERR, > "unable to map response address to physical memory\n"); > return -ENOMEM; > @@ -4407,6 +4409,7 @@ int bnxt_hwrm_flash_nvram(struct bnxt *bp, uint16_t dir_type, > > dma_handle = rte_malloc_virt2iova(buf); > if (dma_handle == RTE_BAD_IOVA) { > + rte_free(buf); > PMD_DRV_LOG(ERR, > "unable to map response address to physical memory\n"); > return -ENOMEM; > -- > 2.18.1 >
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 24c33185b4..ebbf504c0c 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -4320,6 +4320,7 @@ int bnxt_get_nvram_directory(struct bnxt *bp, uint32_t len, uint8_t *data) return -ENOMEM; dma_handle = rte_malloc_virt2iova(buf); if (dma_handle == RTE_BAD_IOVA) { + rte_free(buf); PMD_DRV_LOG(ERR, "unable to map response address to physical memory\n"); return -ENOMEM; @@ -4354,6 +4355,7 @@ int bnxt_hwrm_get_nvram_item(struct bnxt *bp, uint32_t index, dma_handle = rte_malloc_virt2iova(buf); if (dma_handle == RTE_BAD_IOVA) { + rte_free(buf); PMD_DRV_LOG(ERR, "unable to map response address to physical memory\n"); return -ENOMEM; @@ -4407,6 +4409,7 @@ int bnxt_hwrm_flash_nvram(struct bnxt *bp, uint16_t dir_type, dma_handle = rte_malloc_virt2iova(buf); if (dma_handle == RTE_BAD_IOVA) { + rte_free(buf); PMD_DRV_LOG(ERR, "unable to map response address to physical memory\n"); return -ENOMEM;