diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-18 10:16:43 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-18 10:16:43 -0700 | 
| commit | 7d77879bfd5ab0bcd9eb33180224b27fda61a7cd (patch) | |
| tree | e43d36e1405b4edf3198c85eec9f6eac1055ec91 | |
| parent | 87a54cae0ba094de2ddb7e5f429fd32b965a2fbf (diff) | |
| parent | 6ea6215fe394e320468589d9bba464a48f6d823a (diff) | |
Merge tag 'trace-fixes-v3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing fixes from Steven Rostedt:
 "This contains two fixes.
  The first is to remove a duplication of creating debugfs files that
  already exist and causes an error report to be printed due to the
  failure of the second creation.
  The second is a memory leak fix that was introduced in 3.14"
* tag 'trace-fixes-v3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  tracing/uprobes: Fix uprobe_cpu_buffer memory leak
  tracing: Do not try to recreated toplevel set_ftrace_* files
| -rw-r--r-- | kernel/trace/trace_functions.c | 16 | ||||
| -rw-r--r-- | kernel/trace/trace_uprobe.c | 6 | 
2 files changed, 16 insertions, 6 deletions
diff --git a/kernel/trace/trace_functions.c b/kernel/trace/trace_functions.c index 5b781d2be383..ffd56351b521 100644 --- a/kernel/trace/trace_functions.c +++ b/kernel/trace/trace_functions.c @@ -58,12 +58,16 @@ int ftrace_create_function_files(struct trace_array *tr,  {  	int ret; -	/* The top level array uses the "global_ops". */ -	if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL)) { -		ret = allocate_ftrace_ops(tr); -		if (ret) -			return ret; -	} +	/* +	 * The top level array uses the "global_ops", and the files are +	 * created on boot up. +	 */ +	if (tr->flags & TRACE_ARRAY_FL_GLOBAL) +		return 0; + +	ret = allocate_ftrace_ops(tr); +	if (ret) +		return ret;  	ftrace_create_filter_files(tr->ops, parent); diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c index 930e51462dc8..c082a7441345 100644 --- a/kernel/trace/trace_uprobe.c +++ b/kernel/trace/trace_uprobe.c @@ -732,9 +732,15 @@ static int uprobe_buffer_enable(void)  static void uprobe_buffer_disable(void)  { +	int cpu; +  	BUG_ON(!mutex_is_locked(&event_mutex));  	if (--uprobe_buffer_refcnt == 0) { +		for_each_possible_cpu(cpu) +			free_page((unsigned long)per_cpu_ptr(uprobe_cpu_buffer, +							     cpu)->buf); +  		free_percpu(uprobe_cpu_buffer);  		uprobe_cpu_buffer = NULL;  	}  | 
