]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commit
selinux: fall back to ref-walk if audit is required
authorStephen Smalley <sds@tycho.nsa.gov>
Fri, 22 Nov 2019 17:22:45 +0000 (12:22 -0500)
committerPaolo Pisati <paolo.pisati@canonical.com>
Mon, 17 Feb 2020 11:37:09 +0000 (12:37 +0100)
commita9c32385bdce5e3210ae334301c12962670e8996
tree9ed45f4b3146be6d708736bbd3954cea0c4725eb
parent4abb4d02878a4ce255f4180f788bb8b6a1cafb93
selinux: fall back to ref-walk if audit is required

BugLink: https://bugs.launchpad.net/bugs/1863589
commit 0188d5c025ca8fe756ba3193bd7d150139af5a88 upstream.

commit bda0be7ad994 ("security: make inode_follow_link RCU-walk aware")
passed down the rcu flag to the SELinux AVC, but failed to adjust the
test in slow_avc_audit() to also return -ECHILD on LSM_AUDIT_DATA_DENTRY.
Previously, we only returned -ECHILD if generating an audit record with
LSM_AUDIT_DATA_INODE since this was only relevant from inode_permission.
Move the handling of MAY_NOT_BLOCK to avc_audit() and its inlined
equivalent in selinux_inode_permission() immediately after we determine
that audit is required, and always fall back to ref-walk in this case.

Fixes: bda0be7ad994 ("security: make inode_follow_link RCU-walk aware")
Reported-by: Will Deacon <will@kernel.org>
Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
security/selinux/avc.c
security/selinux/hooks.c
security/selinux/include/avc.h