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: Jason Baron <jbaron@redhat.com> Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Frederic 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>
This commit is contained in:
parent
722154e4ca
commit
de068ec048
|
@ -1925,7 +1925,7 @@ void *raw_field_ptr(struct event *event, const char *name, void *data)
|
|||
if (!field)
|
||||
return NULL;
|
||||
|
||||
if (field->flags & FIELD_IS_STRING) {
|
||||
if (field->flags & FIELD_IS_DYNAMIC) {
|
||||
int offset;
|
||||
|
||||
offset = *(int *)(data + field->offset);
|
||||
|
|
Loading…
Reference in New Issue