hi, yunjian

On 7/2/2020 7:47 PM, wangyunjian wrote:
From: Yunjian Wang <wangyunj...@huawei.com>

The event_cb->dev_name is not freed when freeing event_cb,
and this causes a memory leak.

Fixes: a753e53d517b ("eal: add device event monitor framework")
Cc: sta...@dpdk.org

Signed-off-by: Yunjian Wang <wangyunj...@huawei.com>
---
  lib/librte_eal/common/eal_common_dev.c | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/lib/librte_eal/common/eal_common_dev.c 
b/lib/librte_eal/common/eal_common_dev.c
index 9e4f09d..4cfdb80 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -526,6 +526,8 @@ static int cmp_dev_name(const struct rte_device *dev, const 
void *_name)
                 */
                if (event_cb->active == 0) {
                        TAILQ_REMOVE(&dev_event_cbs, event_cb, next);
+                       if (event_cb->dev_name)
+                               free(event_cb->dev_name);
                        free(event_cb);
                        ret++;
                } else {


After you check, don't you think the memory leak would not occur in rte_dev_event_callback_register when free event_cb? And if you have find other same problem, suggest to fix it wholly by this good chance. Thanks.

int
rte_dev_event_callback_register(const char *device_name,
                rte_dev_event_cb_fn cb_fn,
                void *cb_arg)
{

error:
    free(event_cb);
    rte_spinlock_unlock(&dev_event_lock);
    return ret;

}

Reply via email to