Commit f66fedcb723a9f118170200e21dbabb305f8c702

Authored by Masami Hiramatsu
Committed by Arnaldo Carvalho de Melo
1 parent d93dc5c447

perf probe: Fix regression of variable finder

Fix to call convert_variable() if previous call does not fail.

To call convert_variable, it ensures "ret" is 0. However, since
"ret" has the return value of synthesize_perf_probe_arg() which
always returns positive value if it succeeded, perf probe doesn't
call convert_variable(). This will cause a SEGV when we add an
event with arguments.

This has to be fixed as it ensures "ret" is greater than 0
(or not negative).

This regression has been introduced by my previous patch, f182e3e1.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: yrl.pp-manager.tt@hitachi.com
Link: http://lkml.kernel.org/r/20110820053922.3286.65805.stgit@fedora15
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

tools/perf/util/probe-finder.c
... ... @@ -659,7 +659,7 @@
659 659 if (!die_find_variable_at(&pf->cu_die, pf->pvar->var, 0, &vr_die))
660 660 ret = -ENOENT;
661 661 }
662   - if (ret == 0)
  662 + if (ret >= 0)
663 663 ret = convert_variable(&vr_die, pf);
664 664  
665 665 if (ret < 0)