summaryrefslogtreecommitdiffstats
path: root/kernel/rcu
diff options
context:
space:
mode:
authorPaul Moore <pmoore@redhat.com>2014-02-28 07:23:24 -0500
committerPaul Moore <pmoore@redhat.com>2014-02-28 07:23:24 -0500
commit0909c0ae999c325b9d34c6f4710f40730ae3bc24 (patch)
tree60bbe1ec3ac48a1263d0769241c268b3a3b3ecca /kernel/rcu
parent81c94e76ce8e14a487bca210b3fd92ca661516ac (diff)
downloadop-kernel-dev-0909c0ae999c325b9d34c6f4710f40730ae3bc24.zip
op-kernel-dev-0909c0ae999c325b9d34c6f4710f40730ae3bc24.tar.gz
selinux: put the mmap() DAC controls before the MAC controls
It turns out that doing the SELinux MAC checks for mmap() before the DAC checks was causing users and the SELinux policy folks headaches as users were seeing a lot of SELinux AVC denials for the memprotect:mmap_zero permission that would have also been denied by the normal DAC capability checks (CAP_SYS_RAWIO). Example: # cat mmap_test.c #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <sys/mman.h> int main(int argc, char *argv[]) { int rc; void *mem; mem = mmap(0x0, 4096, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); if (mem == MAP_FAILED) return errno; printf("mem = %p\n", mem); munmap(mem, 4096); return 0; } # gcc -g -O0 -o mmap_test mmap_test.c # ./mmap_test mem = (nil) # ausearch -m AVC | grep mmap_zero type=AVC msg=audit(...): avc: denied { mmap_zero } for pid=1025 comm="mmap_test" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=memprotect This patch corrects things so that when the above example is run by a user without CAP_SYS_RAWIO the SELinux AVC is no longer generated as the DAC capability check fails before the SELinux permission check. Signed-off-by: Paul Moore <pmoore@redhat.com> Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
Diffstat (limited to 'kernel/rcu')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud