diff options
Diffstat (limited to 'security/lsm_audit.c')
| -rw-r--r-- | security/lsm_audit.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/security/lsm_audit.c b/security/lsm_audit.c index 90c129b0102..8d8d97dbb38 100644 --- a/security/lsm_audit.c +++ b/security/lsm_audit.c @@ -213,12 +213,15 @@ static void dump_common_audit_data(struct audit_buffer *ab,  {  	struct task_struct *tsk = current; -	if (a->tsk) -		tsk = a->tsk; -	if (tsk && tsk->pid) { -		audit_log_format(ab, " pid=%d comm=", tsk->pid); -		audit_log_untrustedstring(ab, tsk->comm); -	} +	/* +	 * To keep stack sizes in check force programers to notice if they +	 * start making this union too large!  See struct lsm_network_audit +	 * as an example of how to deal with large data. +	 */ +	BUILD_BUG_ON(sizeof(a->u) > sizeof(void *)*2); + +	audit_log_format(ab, " pid=%d comm=", tsk->pid); +	audit_log_untrustedstring(ab, tsk->comm);  	switch (a->type) {  	case LSM_AUDIT_DATA_NONE:  |