selinux: avoid silent denials in permissive mode under RCU walk
commit0dc1ba24f7
("SELINUX: Make selinux cache VFS RCU walks safe") results in no audit messages at all if in permissive mode because the cache is updated during the rcu walk and thus no denial occurs on the subsequent ref walk. Fix this by not updating the cache when performing a non-blocking permission check. This only affects search and symlink read checks during rcu walk. Fixes:0dc1ba24f7
("SELINUX: Make selinux cache VFS RCU walks safe") Reported-by: BMK <bmktuwien@gmail.com> Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov> Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:

committed by
Paul Moore

parent
bfeffd1552
commit
3a28cff3bd
@@ -2982,7 +2982,9 @@ static int selinux_inode_permission(struct inode *inode, int mask)
|
||||
return PTR_ERR(isec);
|
||||
|
||||
rc = avc_has_perm_noaudit(&selinux_state,
|
||||
sid, isec->sid, isec->sclass, perms, 0, &avd);
|
||||
sid, isec->sid, isec->sclass, perms,
|
||||
(flags & MAY_NOT_BLOCK) ? AVC_NONBLOCKING : 0,
|
||||
&avd);
|
||||
audited = avc_audit_required(perms, &avd, rc,
|
||||
from_access ? FILE__AUDIT_ACCESS : 0,
|
||||
&denied);
|
||||
|
Reference in New Issue
Block a user