selinux: treat atomic flags more carefully
authorOndrej Mosnacek <omosnace@redhat.com>
Tue, 7 Jan 2020 13:31:53 +0000 (14:31 +0100)
committerPaul Moore <paul@paul-moore.com>
Fri, 10 Jan 2020 20:19:39 +0000 (15:19 -0500)
commit65cddd50980be8c9c27ad7518a0dc812eccb25d5
treedc4e6e963f7656f323f0c23bf3ffe0f51d1078c7
parentb78b7d59bdbe6028ab362c2551dc684872f2052a
selinux: treat atomic flags more carefully

The disabled/enforcing/initialized flags are all accessed concurrently
by threads so use the appropriate accessors that ensure atomicity and
document that it is expected.

Use smp_load/acquire...() helpers (with memory barriers) for the
initialized flag, since it gates access to the rest of the state
structures.

Note that the disabled flag is currently not used for anything other
than avoiding double disable, but it will be used for bailing out of
hooks once security_delete_hooks() is removed.

Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: James Morris <jamorris@linux.microsoft.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/hooks.c
security/selinux/include/security.h
security/selinux/ss/services.c