kernel_optimize_test/security/selinux/ss
Stephen Smalley 461698026f selinux: encapsulate policy state, refactor policy load
Encapsulate the policy state in its own structure (struct
selinux_policy) that is separately allocated but referenced from the
selinux_ss structure.  The policy state includes the SID table
(particularly the context structures), the policy database, and the
mapping between the kernel classes/permissions and the policy values.
Refactor the security server portion of the policy load logic to
cleanly separate loading of the new structures from committing the new
policy.  Unify the initial policy load and reload code paths as much
as possible, avoiding duplicated code.  Make sure we are taking the
policy read-lock prior to any dereferencing of the policy.  Move the
copying of the policy capability booleans into the state structure
outside of the policy write-lock because they are separate from the
policy and are read outside of any policy lock; possibly they should
be using at least READ_ONCE/WRITE_ONCE or smp_load_acquire/store_release.

These changes simplify the policy loading logic, reduce the size of
the critical section while holding the policy write-lock, and should
facilitate future changes to e.g. refactor the entire policy reload
logic including the selinuxfs code to make the updating of the policy
and the selinuxfs directory tree atomic and/or to convert the policy
read-write lock to RCU.

Signed-off-by: Stephen Smalley <stephen.smalley.work@gmail.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
2020-08-17 20:48:57 -04:00
..
avtab.c selinux: avtab_init() and cond_policydb_init() return void 2020-03-05 14:55:43 -05:00
avtab.h selinux: avtab_init() and cond_policydb_init() return void 2020-03-05 14:55:43 -05:00
conditional.c selinux/stable-5.9 PR 20200803 2020-08-04 14:18:01 -07:00
conditional.h selinux: specialize symtab insert and search functions 2020-07-08 20:21:43 -04:00
constraint.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
context.c selinux: hash context structure directly 2020-04-17 16:04:34 -04:00
context.h selinux: move context hashing under sidtab 2020-04-17 16:04:38 -04:00
ebitmap.c selinux: hash context structure directly 2020-04-17 16:04:34 -04:00
ebitmap.h selinux: hash context structure directly 2020-04-17 16:04:34 -04:00
hashtab.c selinux: complete the inlining of hashtab functions 2020-07-09 19:08:16 -04:00
hashtab.h selinux: complete the inlining of hashtab functions 2020-07-09 19:08:16 -04:00
mls_types.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mls.c selinux: prepare for inlining of hashtab functions 2020-07-09 19:05:36 -04:00
mls.h selinux: hash context structure directly 2020-04-17 16:04:34 -04:00
policydb.c selinux: prepare for inlining of hashtab functions 2020-07-09 19:05:36 -04:00
policydb.h selinux: prepare for inlining of hashtab functions 2020-07-09 19:05:36 -04:00
services.c selinux: encapsulate policy state, refactor policy load 2020-08-17 20:48:57 -04:00
services.h selinux: encapsulate policy state, refactor policy load 2020-08-17 20:48:57 -04:00
sidtab.c selinux: move context hashing under sidtab 2020-04-17 16:04:38 -04:00
sidtab.h selinux: move context hashing under sidtab 2020-04-17 16:04:38 -04:00
symtab.c selinux: prepare for inlining of hashtab functions 2020-07-09 19:05:36 -04:00
symtab.h selinux: specialize symtab insert and search functions 2020-07-08 20:21:43 -04:00