The function handler should be unregistered when the plugin is unloaded otherwise it'll try to access invalid memory. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Reviewed-by: Jiri Olsa <jolsa@redhat.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung.kim@lge.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/1389839478-5887-10-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			729 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			729 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
#include <inttypes.h>
 | 
						|
#include <endian.h>
 | 
						|
#include "event-parse.h"
 | 
						|
 | 
						|
static unsigned long long
 | 
						|
process___le16_to_cpup(struct trace_seq *s,
 | 
						|
		       unsigned long long *args)
 | 
						|
{
 | 
						|
	uint16_t *val = (uint16_t *) (unsigned long) args[0];
 | 
						|
	return val ? (long long) le16toh(*val) : 0;
 | 
						|
}
 | 
						|
 | 
						|
int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
 | 
						|
{
 | 
						|
	pevent_register_print_function(pevent,
 | 
						|
				       process___le16_to_cpup,
 | 
						|
				       PEVENT_FUNC_ARG_INT,
 | 
						|
				       "__le16_to_cpup",
 | 
						|
				       PEVENT_FUNC_ARG_PTR,
 | 
						|
				       PEVENT_FUNC_ARG_VOID);
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
void PEVENT_PLUGIN_UNLOADER(struct pevent *pevent)
 | 
						|
{
 | 
						|
	pevent_unregister_print_function(pevent, process___le16_to_cpup,
 | 
						|
					 "__le16_to_cpup");
 | 
						|
}
 |