diff options
Diffstat (limited to 'security/lsm_audit.c')
| -rw-r--r-- | security/lsm_audit.c | 21 | 
1 files changed, 13 insertions, 8 deletions
diff --git a/security/lsm_audit.c b/security/lsm_audit.c index 8d8d97dbb38..69fdf3bc765 100644 --- a/security/lsm_audit.c +++ b/security/lsm_audit.c @@ -220,7 +220,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,  	 */  	BUILD_BUG_ON(sizeof(a->u) > sizeof(void *)*2); -	audit_log_format(ab, " pid=%d comm=", tsk->pid); +	audit_log_format(ab, " pid=%d comm=", task_pid_nr(tsk));  	audit_log_untrustedstring(ab, tsk->comm);  	switch (a->type) { @@ -278,9 +278,12 @@ static void dump_common_audit_data(struct audit_buffer *ab,  	}  	case LSM_AUDIT_DATA_TASK:  		tsk = a->u.tsk; -		if (tsk && tsk->pid) { -			audit_log_format(ab, " pid=%d comm=", tsk->pid); -			audit_log_untrustedstring(ab, tsk->comm); +		if (tsk) { +			pid_t pid = task_pid_nr(tsk); +			if (pid) { +				audit_log_format(ab, " pid=%d comm=", pid); +				audit_log_untrustedstring(ab, tsk->comm); +			}  		}  		break;  	case LSM_AUDIT_DATA_NET: @@ -302,18 +305,19 @@ static void dump_common_audit_data(struct audit_buffer *ab,  						"faddr", "fport");  				break;  			} +#if IS_ENABLED(CONFIG_IPV6)  			case AF_INET6: {  				struct inet_sock *inet = inet_sk(sk); -				struct ipv6_pinfo *inet6 = inet6_sk(sk); -				print_ipv6_addr(ab, &inet6->rcv_saddr, +				print_ipv6_addr(ab, &sk->sk_v6_rcv_saddr,  						inet->inet_sport,  						"laddr", "lport"); -				print_ipv6_addr(ab, &inet6->daddr, +				print_ipv6_addr(ab, &sk->sk_v6_daddr,  						inet->inet_dport,  						"faddr", "fport");  				break;  			} +#endif  			case AF_UNIX:  				u = unix_sk(sk);  				if (u->path.dentry) { @@ -396,7 +400,8 @@ void common_lsm_audit(struct common_audit_data *a,  	if (a == NULL)  		return;  	/* we use GFP_ATOMIC so we won't sleep */ -	ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_AVC); +	ab = audit_log_start(current->audit_context, GFP_ATOMIC | __GFP_NOWARN, +			     AUDIT_AVC);  	if (ab == NULL)  		return;  | 
