diff options
Diffstat (limited to 'security/selinux/avc.c')
| -rw-r--r-- | security/selinux/avc.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/security/selinux/avc.c b/security/selinux/avc.c index dad36a6ab45..a18f1fa6440 100644 --- a/security/selinux/avc.c +++ b/security/selinux/avc.c @@ -444,11 +444,15 @@ static void avc_audit_post_callback(struct audit_buffer *ab, void *a)  	avc_dump_query(ab, ad->selinux_audit_data->ssid,  			   ad->selinux_audit_data->tsid,  			   ad->selinux_audit_data->tclass); +	if (ad->selinux_audit_data->denied) { +		audit_log_format(ab, " permissive=%u", +				 ad->selinux_audit_data->result ? 0 : 1); +	}  }  /* This is the slow part of avc audit with big stack footprint */  noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass, -		u32 requested, u32 audited, u32 denied, +		u32 requested, u32 audited, u32 denied, int result,  		struct common_audit_data *a,  		unsigned flags)  { @@ -477,6 +481,7 @@ noinline int slow_avc_audit(u32 ssid, u32 tsid, u16 tclass,  	sad.tsid = tsid;  	sad.audited = audited;  	sad.denied = denied; +	sad.result = result;  	a->selinux_audit_data = &sad; @@ -746,7 +751,6 @@ inline int avc_has_perm_noaudit(u32 ssid, u32 tsid,   * @tclass: target security class   * @requested: requested permissions, interpreted based on @tclass   * @auditdata: auxiliary audit data - * @flags: VFS walk flags   *   * Check the AVC to determine whether the @requested permissions are granted   * for the SID pair (@ssid, @tsid), interpreting the permissions @@ -756,17 +760,15 @@ inline int avc_has_perm_noaudit(u32 ssid, u32 tsid,   * permissions are granted, -%EACCES if any permissions are denied, or   * another -errno upon other errors.   */ -int avc_has_perm_flags(u32 ssid, u32 tsid, u16 tclass, -		       u32 requested, struct common_audit_data *auditdata, -		       unsigned flags) +int avc_has_perm(u32 ssid, u32 tsid, u16 tclass, +		 u32 requested, struct common_audit_data *auditdata)  {  	struct av_decision avd;  	int rc, rc2;  	rc = avc_has_perm_noaudit(ssid, tsid, tclass, requested, 0, &avd); -	rc2 = avc_audit(ssid, tsid, tclass, requested, &avd, rc, auditdata, -			flags); +	rc2 = avc_audit(ssid, tsid, tclass, requested, &avd, rc, auditdata);  	if (rc2)  		return rc2;  	return rc;  | 
