[PATCH 3/8] trace: fix leak with regexp
David Marchand
david.marchand at redhat.com
Wed Sep 21 14:03:54 CEST 2022
The precompiled buffer initialised in regcomp must be freed before
leaving rte_trace_regexp.
Fixes: 84c4fae4628f ("trace: implement operation APIs")
Cc: stable at dpdk.org
Signed-off-by: David Marchand <david.marchand at 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
More information about the stable
mailing list