diff options
Diffstat (limited to 'kernel/tracepoint.c')
| -rw-r--r-- | kernel/tracepoint.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c index d0639d917899..1f9a31f934a4 100644 --- a/kernel/tracepoint.c +++ b/kernel/tracepoint.c @@ -194,9 +194,13 @@ static int tracepoint_add_func(struct tracepoint *tp,  			       struct tracepoint_func *func, int prio)  {  	struct tracepoint_func *old, *tp_funcs; +	int ret; -	if (tp->regfunc && !static_key_enabled(&tp->key)) -		tp->regfunc(); +	if (tp->regfunc && !static_key_enabled(&tp->key)) { +		ret = tp->regfunc(); +		if (ret < 0) +			return ret; +	}  	tp_funcs = rcu_dereference_protected(tp->funcs,  			lockdep_is_held(&tracepoints_mutex)); @@ -529,7 +533,7 @@ EXPORT_SYMBOL_GPL(for_each_kernel_tracepoint);  /* NB: reg/unreg are called while guarded with the tracepoints_mutex */  static int sys_tracepoint_refcount; -void syscall_regfunc(void) +int syscall_regfunc(void)  {  	struct task_struct *p, *t; @@ -541,6 +545,8 @@ void syscall_regfunc(void)  		read_unlock(&tasklist_lock);  	}  	sys_tracepoint_refcount++; + +	return 0;  }  void syscall_unregfunc(void)  |