[2/2] eventdev: fix memory leakage when create thread fail

Message ID 1619775278-25857-3-git-send-email-humin29@huawei.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers
Series bugfix for lib eventdev |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/github-robot fail github build: failed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS

Commit Message

humin (Q) April 30, 2021, 9:34 a.m. UTC
  From: Chengwen Feng <fengchengwen@huawei.com>

This patch fixes the issue that epoll_events memory is not released
after the intr thread created fail.

Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 lib/eventdev/rte_event_eth_rx_adapter.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Jerin Jacob May 1, 2021, 12:38 p.m. UTC | #1
On Fri, Apr 30, 2021 at 3:04 PM Min Hu (Connor) <humin29@huawei.com> wrote:
>
> From: Chengwen Feng <fengchengwen@huawei.com>
>
> This patch fixes the issue that epoll_events memory is not released
> after the intr thread created fail.
>
> Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
> Cc: stable@dpdk.org
>
> Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>

Reviewed-by: Jerin Jacob <jerinj@marvell.com>


> ---
>  lib/eventdev/rte_event_eth_rx_adapter.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
> index d317e89..13dfb28 100644
> --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> @@ -1436,6 +1436,7 @@ rxa_create_intr_thread(struct rte_event_eth_rx_adapter *rx_adapter)
>                 return 0;
>
>         RTE_EDEV_LOG_ERR("Failed to create interrupt thread err = %d\n", err);
> +       rte_free(rx_adapter->epoll_events);
>  error:
>         rte_ring_free(rx_adapter->intr_ring);
>         rx_adapter->intr_ring = NULL;
> --
> 2.7.4
>
  
Jerin Jacob May 1, 2021, 2:41 p.m. UTC | #2
On Sat, May 1, 2021 at 6:08 PM Jerin Jacob <jerinjacobk@gmail.com> wrote:
>
> On Fri, Apr 30, 2021 at 3:04 PM Min Hu (Connor) <humin29@huawei.com> wrote:
> >
> > From: Chengwen Feng <fengchengwen@huawei.com>
> >
> > This patch fixes the issue that epoll_events memory is not released
> > after the intr thread created fail.
> >
> > Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
> > Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>
> Reviewed-by: Jerin Jacob <jerinj@marvell.com>


Series applied to dpdk-next-eventdev/for-main. Thanks.



>
>
> > ---
> >  lib/eventdev/rte_event_eth_rx_adapter.c | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
> > index d317e89..13dfb28 100644
> > --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> > @@ -1436,6 +1436,7 @@ rxa_create_intr_thread(struct rte_event_eth_rx_adapter *rx_adapter)
> >                 return 0;
> >
> >         RTE_EDEV_LOG_ERR("Failed to create interrupt thread err = %d\n", err);
> > +       rte_free(rx_adapter->epoll_events);
> >  error:
> >         rte_ring_free(rx_adapter->intr_ring);
> >         rx_adapter->intr_ring = NULL;
> > --
> > 2.7.4
> >
  

Patch

diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c
index d317e89..13dfb28 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/eventdev/rte_event_eth_rx_adapter.c
@@ -1436,6 +1436,7 @@  rxa_create_intr_thread(struct rte_event_eth_rx_adapter *rx_adapter)
 		return 0;
 
 	RTE_EDEV_LOG_ERR("Failed to create interrupt thread err = %d\n", err);
+	rte_free(rx_adapter->epoll_events);
 error:
 	rte_ring_free(rx_adapter->intr_ring);
 	rx_adapter->intr_ring = NULL;