All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tools lib traceevent: Do not reassign parg after collapse_tree()
@ 2016-05-11 19:09 Steven Rostedt
  2016-05-12 12:57 ` Namhyung Kim
  2016-05-13  9:18 ` [tip:perf/urgent] " tip-bot for Steven Rostedt
  0 siblings, 2 replies; 4+ messages in thread
From: Steven Rostedt @ 2016-05-11 19:09 UTC (permalink / raw)
  To: LKML; +Cc: Arnaldo Carvalho de Melo, Ingo Molnar, Namhyung Kim


At the end of process_filter(), collapse_tree() was changed to update the
parg parameter, but the reassignment after the call wasn't removed.
What happens is that the "current_op" gets modified and freed and parg
is assigned to the new allocated argument. But after the call to
collapse_tree(), parg is assigned again to the just freed "current_op",
and this causes the tool to crash.

current_op must also be assigned to NULL in case of error, otherwise it
will cause it to be free()ed twice.

Cc: Namhyung Kim <namhyung@kernel.org>
Cc: stable@vger.kernel.org # 3.14+
Fixes: 42d6194d133c ("tools lib traceevent: Refactor process_filter()")
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 tools/lib/traceevent/parse-filter.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c
index 0144b3d1bb77..88cccea3ca99 100644
--- a/tools/lib/traceevent/parse-filter.c
+++ b/tools/lib/traceevent/parse-filter.c
@@ -1164,11 +1164,11 @@ process_filter(struct event_format *event, struct filter_arg **parg,
 		current_op = current_exp;
 
 	ret = collapse_tree(current_op, parg, error_str);
+	/* collapse_tree() may free current_op, and updates parg accordingly */
+	current_op = NULL;
 	if (ret < 0)
 		goto fail;
 
-	*parg = current_op;
-
 	free(token);
 	return 0;
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] tools lib traceevent: Do not reassign parg after collapse_tree()
  2016-05-11 19:09 [PATCH] tools lib traceevent: Do not reassign parg after collapse_tree() Steven Rostedt
@ 2016-05-12 12:57 ` Namhyung Kim
  2016-05-12 14:27   ` Arnaldo Carvalho de Melo
  2016-05-13  9:18 ` [tip:perf/urgent] " tip-bot for Steven Rostedt
  1 sibling, 1 reply; 4+ messages in thread
From: Namhyung Kim @ 2016-05-12 12:57 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: LKML, Arnaldo Carvalho de Melo, Ingo Molnar

Hi Steve,

On Thu, May 12, 2016 at 4:09 AM, Steven Rostedt <rostedt@goodmis.org> wrote:
>
> At the end of process_filter(), collapse_tree() was changed to update the
> parg parameter, but the reassignment after the call wasn't removed.
> What happens is that the "current_op" gets modified and freed and parg
> is assigned to the new allocated argument. But after the call to
> collapse_tree(), parg is assigned again to the just freed "current_op",
> and this causes the tool to crash.
>
> current_op must also be assigned to NULL in case of error, otherwise it
> will cause it to be free()ed twice.
>
> Cc: stable@vger.kernel.org # 3.14+
> Fixes: 42d6194d133c ("tools lib traceevent: Refactor process_filter()")
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung


> ---
>  tools/lib/traceevent/parse-filter.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c
> index 0144b3d1bb77..88cccea3ca99 100644
> --- a/tools/lib/traceevent/parse-filter.c
> +++ b/tools/lib/traceevent/parse-filter.c
> @@ -1164,11 +1164,11 @@ process_filter(struct event_format *event, struct filter_arg **parg,
>                 current_op = current_exp;
>
>         ret = collapse_tree(current_op, parg, error_str);
> +       /* collapse_tree() may free current_op, and updates parg accordingly */
> +       current_op = NULL;
>         if (ret < 0)
>                 goto fail;
>
> -       *parg = current_op;
> -
>         free(token);
>         return 0;
>
> --
> 1.8.3.1
>



-- 
Thanks,
Namhyung

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] tools lib traceevent: Do not reassign parg after collapse_tree()
  2016-05-12 12:57 ` Namhyung Kim
@ 2016-05-12 14:27   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-05-12 14:27 UTC (permalink / raw)
  To: Namhyung Kim; +Cc: Steven Rostedt, LKML, Ingo Molnar

Em Thu, May 12, 2016 at 09:57:13PM +0900, Namhyung Kim escreveu:
> Hi Steve,
> 
> On Thu, May 12, 2016 at 4:09 AM, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > At the end of process_filter(), collapse_tree() was changed to update the
> > parg parameter, but the reassignment after the call wasn't removed.
> > What happens is that the "current_op" gets modified and freed and parg
> > is assigned to the new allocated argument. But after the call to
> > collapse_tree(), parg is assigned again to the just freed "current_op",
> > and this causes the tool to crash.
> >
> > current_op must also be assigned to NULL in case of error, otherwise it
> > will cause it to be free()ed twice.
> >
> > Cc: stable@vger.kernel.org # 3.14+
> > Fixes: 42d6194d133c ("tools lib traceevent: Refactor process_filter()")
> > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
 
> Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks, applied to perf/urgent.

- Arnaldo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [tip:perf/urgent] tools lib traceevent: Do not reassign parg after collapse_tree()
  2016-05-11 19:09 [PATCH] tools lib traceevent: Do not reassign parg after collapse_tree() Steven Rostedt
  2016-05-12 12:57 ` Namhyung Kim
@ 2016-05-13  9:18 ` tip-bot for Steven Rostedt
  1 sibling, 0 replies; 4+ messages in thread
From: tip-bot for Steven Rostedt @ 2016-05-13  9:18 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: mingo, linux-kernel, rostedt, acme, hpa, namhyung, tglx

Commit-ID:  106b816cb46ebd87408b4ed99a2e16203114daa6
Gitweb:     http://git.kernel.org/tip/106b816cb46ebd87408b4ed99a2e16203114daa6
Author:     Steven Rostedt <rostedt@goodmis.org>
AuthorDate: Wed, 11 May 2016 15:09:36 -0400
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Thu, 12 May 2016 11:27:00 -0300

tools lib traceevent: Do not reassign parg after collapse_tree()

At the end of process_filter(), collapse_tree() was changed to update
the parg parameter, but the reassignment after the call wasn't removed.

What happens is that the "current_op" gets modified and freed and parg
is assigned to the new allocated argument. But after the call to
collapse_tree(), parg is assigned again to the just freed "current_op",
and this causes the tool to crash.

The current_op variable must also be assigned to NULL in case of error,
otherwise it will cause it to be free()ed twice.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: stable@vger.kernel.org # 3.14+
Fixes: 42d6194d133c ("tools lib traceevent: Refactor process_filter()")
Link: http://lkml.kernel.org/r/20160511150936.678c18a1@gandalf.local.home
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/lib/traceevent/parse-filter.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/lib/traceevent/parse-filter.c b/tools/lib/traceevent/parse-filter.c
index 0144b3d..88cccea 100644
--- a/tools/lib/traceevent/parse-filter.c
+++ b/tools/lib/traceevent/parse-filter.c
@@ -1164,11 +1164,11 @@ process_filter(struct event_format *event, struct filter_arg **parg,
 		current_op = current_exp;
 
 	ret = collapse_tree(current_op, parg, error_str);
+	/* collapse_tree() may free current_op, and updates parg accordingly */
+	current_op = NULL;
 	if (ret < 0)
 		goto fail;
 
-	*parg = current_op;
-
 	free(token);
 	return 0;
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-05-13  9:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-11 19:09 [PATCH] tools lib traceevent: Do not reassign parg after collapse_tree() Steven Rostedt
2016-05-12 12:57 ` Namhyung Kim
2016-05-12 14:27   ` Arnaldo Carvalho de Melo
2016-05-13  9:18 ` [tip:perf/urgent] " tip-bot for Steven Rostedt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.