perf - ensure offset provided during probe addition is not greater than function size when no DWARF info
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 perf - ensure offset provided during probe addition is not greater than function size when no DWARF info
perf probe allows kprobe to be inserted at any offset from a function start, which results in adding kprobes to unintended location. (example: perf probe do_fork+10000 is allowed even though size of do_fork is ~904).
My previous patch https://lkml.org/lkml/2012/2/24/42 addressed the case where DWARF info was available for the kernel. This patch fixes the case where perf probe is used on a kernel without debuginfo available.
---
tools/perf/util/probe-event.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
tools/perf/util/probe-event.c +6 -0
@@ -1966,6 +1966,12 @@ static int convert_to_probe_trace_events(struct perf_probe_event *pev, tev->point.symbol); ret = -ENOENT ; goto error; + }else if (tev->point.offset > sym->end - sym->start) { +pr_warning ("Offset specified is greater than size of %s\n" , + tev->point.symbol); + ret = -ENOENT ; + goto error; + }return 1 ;
[tip:perf/urgent] perf probe: Ensure offset provided is not greater than function length without DWARF info too
Commit-ID: 1c1bc9223387dacc48eb2b61b0baabe7e9cf47f6 Gitweb: http://git.kernel.org/tip/1c1bc9223387dacc48eb2b61b0baabe7e9cf47f6 Author: Prashanth Nageshappa <[email protected]> AuthorDate: Tue, 28 Feb 2012 09:43:01 +0530 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 29 Feb 2012 18:29:46 -0300
perf probe: Ensure offset provided is not greater than function length without DWARF info too
The 'perf probe' command allows kprobe to be inserted at any offset from a function start, which results in adding kprobes to unintended location. (example: perf probe do_fork+10000 is allowed even though size of do_fork is ~904).
My previous patch https://lkml.org/lkml/2012/2/24/42 addressed the case where DWARF info was available for the kernel. This patch fixes the case where perf probe is used on a kernel without debuginfo available.
--- tools/perf/util/probe-event.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
tools/perf/util/probe-event.c +6 -0
@@ -1867,6 +1867,12 @@ static int convert_to_probe_trace_events(struct perf_probe_event *pev, tev->point.symbol); ret = -ENOENT ; goto error; + }else if (tev->point.offset > sym->end - sym->start) { +pr_warning ("Offset specified is greater than size of %s\n" , + tev->point.symbol); + ret = -ENOENT ; + goto error; + }return 1 ;