The precompiled buffer initialised in regcomp must be freed before leaving rte_trace_regexp.
Fixes: 84c4fae4628f ("trace: implement operation APIs") Cc: sta...@dpdk.org Signed-off-by: David Marchand <david.march...@redhat.com> --- lib/eal/common/eal_common_trace.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/eal/common/eal_common_trace.c b/lib/eal/common/eal_common_trace.c index 1db28a441d..c835b0d16e 100644 --- a/lib/eal/common/eal_common_trace.c +++ b/lib/eal/common/eal_common_trace.c @@ -210,15 +210,18 @@ rte_trace_regexp(const char *regex, bool enable) return -EINVAL; STAILQ_FOREACH(tp, &tp_list, next) { - if (regexec(&r, tp->name, 0, NULL, 0) == 0) { - if (enable) - rc = rte_trace_point_enable(tp->handle); - else - rc = rte_trace_point_disable(tp->handle); - found = 1; + if (regexec(&r, tp->name, 0, NULL, 0) != 0) + continue; + + if (enable) + rc = rte_trace_point_enable(tp->handle); + else + rc = rte_trace_point_disable(tp->handle); + if (rc < 0) { + found = 0; + break; } - if (rc < 0) - return rc; + found = 1; } regfree(&r); -- 2.37.3