diff options
Diffstat (limited to 'kernel/audit.c')
| -rw-r--r-- | kernel/audit.c | 23 | 
1 files changed, 12 insertions, 11 deletions
| diff --git a/kernel/audit.c b/kernel/audit.c index 1edaa4846a47..6a95a6077953 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -123,7 +123,7 @@ static u32	audit_backlog_wait_time = AUDIT_BACKLOG_WAIT_TIME;  /* The identity of the user shutting down the audit system. */  static kuid_t		audit_sig_uid = INVALID_UID;  static pid_t		audit_sig_pid = -1; -static u32		audit_sig_sid; +static struct lsm_prop	audit_sig_lsm;  /* Records can be lost in several ways:     0) [suppressed in audit_alloc] @@ -1473,20 +1473,21 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh,  	}  	case AUDIT_SIGNAL_INFO:  		len = 0; -		if (audit_sig_sid) { -			err = security_secid_to_secctx(audit_sig_sid, &ctx, &len); +		if (lsmprop_is_set(&audit_sig_lsm)) { +			err = security_lsmprop_to_secctx(&audit_sig_lsm, &ctx, +							 &len);  			if (err)  				return err;  		}  		sig_data = kmalloc(struct_size(sig_data, ctx, len), GFP_KERNEL);  		if (!sig_data) { -			if (audit_sig_sid) +			if (lsmprop_is_set(&audit_sig_lsm))  				security_release_secctx(ctx, len);  			return -ENOMEM;  		}  		sig_data->uid = from_kuid(&init_user_ns, audit_sig_uid);  		sig_data->pid = audit_sig_pid; -		if (audit_sig_sid) { +		if (lsmprop_is_set(&audit_sig_lsm)) {  			memcpy(sig_data->ctx, ctx, len);  			security_release_secctx(ctx, len);  		} @@ -2102,8 +2103,8 @@ bool audit_string_contains_control(const char *string, size_t len)  /**   * audit_log_n_untrustedstring - log a string that may contain random characters   * @ab: audit_buffer - * @len: length of string (not including trailing null)   * @string: string to be logged + * @len: length of string (not including trailing null)   *   * This code will escape a string that is passed to it if the string   * contains a control character, unprintable character, double quote mark, @@ -2178,16 +2179,16 @@ void audit_log_key(struct audit_buffer *ab, char *key)  int audit_log_task_context(struct audit_buffer *ab)  { +	struct lsm_prop prop;  	char *ctx = NULL;  	unsigned len;  	int error; -	u32 sid; -	security_current_getsecid_subj(&sid); -	if (!sid) +	security_current_getlsmprop_subj(&prop); +	if (!lsmprop_is_set(&prop))  		return 0; -	error = security_secid_to_secctx(sid, &ctx, &len); +	error = security_lsmprop_to_secctx(&prop, &ctx, &len);  	if (error) {  		if (error != -EINVAL)  			goto error_path; @@ -2404,7 +2405,7 @@ int audit_signal_info(int sig, struct task_struct *t)  			audit_sig_uid = auid;  		else  			audit_sig_uid = uid; -		security_current_getsecid_subj(&audit_sig_sid); +		security_current_getlsmprop_subj(&audit_sig_lsm);  	}  	return audit_signal_info_syscall(t); | 
