[EXT] [PATCH 3/8] trace: fix leak with regexp
Sunil Kumar Kori
skori at marvell.com
Thu Sep 22 13:00:22 CEST 2022
> -----Original Message-----
> From: David Marchand <david.marchand at redhat.com>
> Sent: Wednesday, September 21, 2022 5:34 PM
> To: dev at dpdk.org
> Cc: stable at dpdk.org; Jerin Jacob Kollanukkaran <jerinj at marvell.com>; Sunil
> Kumar Kori <skori at marvell.com>
> Subject: [EXT] [PATCH 3/8] trace: fix leak with regexp
>
> External Email
>
> ----------------------------------------------------------------------
> 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);
>
> --
I understand the problem addressed by this fix but may be following changes will be sufficient to fix it.
Please highlight, If I am missing. Just trying to reduce the line of changes.
@@ -220,8 +220,10 @@ rte_trace_regexp(const char *regex, bool enable)
rc = rte_trace_point_disable(tp->handle);
found = 1;
}
- if (rc < 0)
- return rc;
+ if (rc < 0) {
+ found = 0;
+ break;
+ }
}
> 2.37.3
More information about the stable
mailing list