Skip to content

Commit

Permalink
perf callchain: Remove unnecessary validation
Browse files Browse the repository at this point in the history
Now that the sample parsing correctly checks data sizes there is no
reason for it to be done again for callchains.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1377591794-30553-4-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Adrian Hunter authored and Arnaldo Carvalho de Melo committed Aug 29, 2013
1 parent 03b6ea9 commit 0794029
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 33 deletions.
8 changes: 0 additions & 8 deletions tools/perf/util/callchain.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@

__thread struct callchain_cursor callchain_cursor;

bool ip_callchain__valid(struct ip_callchain *chain,
const union perf_event *event)
{
unsigned int chain_size = event->header.size;
chain_size -= (unsigned long)&event->ip.__more_data - (unsigned long)event;
return chain->nr * sizeof(u64) <= chain_size;
}

#define chain_for_each_child(child, parent) \
list_for_each_entry(child, &parent->children, siblings)

Expand Down
5 changes: 0 additions & 5 deletions tools/perf/util/callchain.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,6 @@ int callchain_append(struct callchain_root *root,
int callchain_merge(struct callchain_cursor *cursor,
struct callchain_root *dst, struct callchain_root *src);

struct ip_callchain;
union perf_event;

bool ip_callchain__valid(struct ip_callchain *chain,
const union perf_event *event);
/*
* Initialize a cursor before adding entries inside, but keep
* the previously allocated entries as a cache.
Expand Down
20 changes: 0 additions & 20 deletions tools/perf/util/session.c
Original file line number Diff line number Diff line change
Expand Up @@ -997,22 +997,6 @@ static int perf_session_deliver_event(struct perf_session *session,
}
}

static int perf_session__preprocess_sample(struct perf_session *session,
union perf_event *event, struct perf_sample *sample)
{
if (event->header.type != PERF_RECORD_SAMPLE ||
!(perf_evlist__sample_type(session->evlist) & PERF_SAMPLE_CALLCHAIN))
return 0;

if (!ip_callchain__valid(sample->callchain, event)) {
pr_debug("call-chain problem with event, skipping it.\n");
++session->stats.nr_invalid_chains;
session->stats.total_invalid_chains += sample->period;
return -EINVAL;
}
return 0;
}

static int perf_session__process_user_event(struct perf_session *session, union perf_event *event,
struct perf_tool *tool, u64 file_offset)
{
Expand Down Expand Up @@ -1075,10 +1059,6 @@ static int perf_session__process_event(struct perf_session *session,
if (ret)
return ret;

/* Preprocess sample records - precheck callchains */
if (perf_session__preprocess_sample(session, event, &sample))
return 0;

if (tool->ordered_samples) {
ret = perf_session_queue_event(session, event, &sample,
file_offset);
Expand Down

0 comments on commit 0794029

Please sign in to comment.