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
					
				
			
		
					 1 changed files with 1 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue