SELINUX: Make selinux cache VFS RCU walks safe
authorEric Paris <eparis@redhat.com>
Mon, 25 Apr 2011 20:26:29 +0000 (16:26 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 26 Apr 2011 01:16:32 +0000 (18:16 -0700)
commit9ade0cf440a1e5800dc68eef2e77b8d9d83a6dff
tree17a06970af5a26cd340b785a894f20f262335575
parent1879fd6a26571fd4e8e1f4bb3e7537bc936b1fe7
SELINUX: Make selinux cache VFS RCU walks safe

Now that the security modules can decide whether they support the
dcache RCU walk or not it's possible to make selinux a bit more
RCU friendly.  The SELinux AVC and security server access decision
code is RCU safe.  A specific piece of the LSM audit code may not
be RCU safe.

This patch makes the VFS RCU walk retry if it would hit the non RCU
safe chunk of code.  It will normally just work under RCU.  This is
done simply by passing the VFS RCU state as a flag down into the
avc_audit() code and returning ECHILD there if it would have an issue.

Based-on-patch-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Eric Paris <eparis@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
security/selinux/avc.c
security/selinux/hooks.c
security/selinux/include/avc.h