Commit de068ec0 authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Ingo Molnar

perf: Fix static strings treated like dynamic ones

The raw_field_ptr() helper, used to retrieve the address of a field
inside a trace event, treats every strings as if they were dynamic
ie: having a secondary level of indirection to retrieve their
contents.

FIELD_IS_STRING doesn't mean FIELD_IS_DYNAMIC, we only need to
compute the secondary dereference for the latter case.

This fixes perf sched segfaults, bad cmdline report and may be
some other bugs.
Reported-by: default avatarJason Baron <jbaron@redhat.com>
Reported-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Tom Zanussi <tzanussi@gmail.com>
parent 722154e4
...@@ -1925,7 +1925,7 @@ void *raw_field_ptr(struct event *event, const char *name, void *data) ...@@ -1925,7 +1925,7 @@ void *raw_field_ptr(struct event *event, const char *name, void *data)
if (!field) if (!field)
return NULL; return NULL;
if (field->flags & FIELD_IS_STRING) { if (field->flags & FIELD_IS_DYNAMIC) {
int offset; int offset;
offset = *(int *)(data + field->offset); offset = *(int *)(data + field->offset);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment