diff options
| -rw-r--r-- | include/linux/audit.h | 7 | ||||
| -rw-r--r-- | kernel/auditsc.c | 2 | ||||
| -rw-r--r-- | kernel/exit.c | 3 | 
3 files changed, 8 insertions, 4 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index 4f1efe3e861..8eb8bda749b 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h @@ -417,7 +417,7 @@ extern int audit_classify_arch(int arch);  				/* Public API */  extern void audit_finish_fork(struct task_struct *child);  extern int  audit_alloc(struct task_struct *task); -extern void audit_free(struct task_struct *task); +extern void __audit_free(struct task_struct *task);  extern void __audit_syscall_entry(int arch,  				  int major, unsigned long a0, unsigned long a1,  				  unsigned long a2, unsigned long a3); @@ -435,6 +435,11 @@ static inline int audit_dummy_context(void)  	void *p = current->audit_context;  	return !p || *(int *)p;  } +static inline void audit_free(struct task_struct *task) +{ +	if (unlikely(task->audit_context)) +		__audit_free(task); +}  static inline void audit_syscall_entry(int arch, int major, unsigned long a0,  				       unsigned long a1, unsigned long a2,  				       unsigned long a3) diff --git a/kernel/auditsc.c b/kernel/auditsc.c index e1062f66b01..7aaeb38b262 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c @@ -1594,7 +1594,7 @@ static void audit_log_exit(struct audit_context *context, struct task_struct *ts   *   * Called from copy_process and do_exit   */ -void audit_free(struct task_struct *tsk) +void __audit_free(struct task_struct *tsk)  {  	struct audit_context *context; diff --git a/kernel/exit.c b/kernel/exit.c index 94ed6e20bb5..88dcbbc446f 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -964,8 +964,7 @@ NORET_TYPE void do_exit(long code)  	acct_collect(code, group_dead);  	if (group_dead)  		tty_audit_exit(); -	if (unlikely(tsk->audit_context)) -		audit_free(tsk); +	audit_free(tsk);  	tsk->exit_code = code;  	taskstats_exit(tsk, group_dead);  |