| From 594087a04eea544356f9c52e83c1a9bc380ce80f Mon Sep 17 00:00:00 2001 |
| From: Masami Hiramatsu <mhiramat@redhat.com> |
| Date: Fri, 12 Mar 2010 18:22:17 -0500 |
| Subject: perf probe: Fix probe_point buffer overrun |
| |
| From: Masami Hiramatsu <mhiramat@redhat.com> |
| |
| commit 594087a04eea544356f9c52e83c1a9bc380ce80f upstream. |
| |
| Fix probe_point array-size overrun problem. In some cases (e.g. |
| inline function), one user-specified probe-point can be |
| translated to many probe address, and it overruns pre-defined |
| array-size. This also removes redundant MAX_PROBES macro |
| definition. |
| |
| Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> |
| Cc: systemtap <systemtap@sources.redhat.com> |
| Cc: DLE <dle-develop@lists.sourceforge.net> |
| LKML-Reference: <20100312232217.2017.45017.stgit@localhost6.localdomain6> |
| [ Note that only root can create new probes. Eventually we should remove |
| the MAX_PROBES limit, but that is a larger patch not eligible to |
| perf/urgent treatment. ] |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| tools/perf/builtin-probe.c | 1 - |
| tools/perf/util/probe-finder.c | 3 +++ |
| 2 files changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/tools/perf/builtin-probe.c |
| +++ b/tools/perf/builtin-probe.c |
| @@ -48,7 +48,6 @@ |
| #include "util/probe-event.h" |
| |
| #define MAX_PATH_LEN 256 |
| -#define MAX_PROBES 128 |
| |
| /* Session management structure */ |
| static struct { |
| --- a/tools/perf/util/probe-finder.c |
| +++ b/tools/perf/util/probe-finder.c |
| @@ -544,6 +544,9 @@ static void show_probepoint(Dwarf_Die sp |
| } |
| free_current_frame_base(pf); |
| |
| + if (pp->found == MAX_PROBES) |
| + die("Too many( > %d) probe point found.\n", MAX_PROBES); |
| + |
| pp->probes[pp->found] = strdup(tmp); |
| pp->found++; |
| } |