The third revision of the LSM initialization rework patchset. While there was a good deal of change between RFC/v1 and RFC/v2, the number of changes in the v3 revision are relatively minor; I think the biggest change is simply bringing it up to date with the current lsm/dev branch.
Please take a look if you haven't already, and to my fellow LSM maintainers, please focus on the patch associated with your LSM and either send me an ACK or reply back with the changes you would like to see before this is merged. I think we're in a good place with this patchset, and I'd like to get this merged during this dev cycle if possible. The RFC/v2 patchset: https://lore.kernel.org/linux-security-module/[email protected]/ The RFC/v1 patchset is below, the cover letter provides some background and motivation for this series which still applies: https://lore.kernel.org/linux-security-module/[email protected]/ CHANGELOG v3: - rebased to lsm/dev branch - fixed IMA/EVM initcall comment (Roberto) - fixed CONFIG_IMA and CONFIG_EVM problems (Nicolas, Roberto) - fixed CONFIG_SECURITY_SMACK_NETFILTER problems (Roberto) - fixed the IMA/EVM header file include macro protections - fixed an off-by-one string length issue in lsm_read() (Casey) RFC/v2: - rename lsm_prep_single() to lsm_prepare() - drop the lsm_prop counting patch - drop the platform_certs changes from the IMA/EVM patch (Mimi) - split/reorder anough patches in the patchset that I lost track - added missing function comment blocks in the SELinux patches - split patch 04/29 into smaller patches (Kees) - fix an LSM list output problem in an intermediate patch (Kees) - preserve the "lsm_active_cnt" variable name (Casey) - cache the lsm_read() string (Kees) - squashed, split, and reordered the enabled/ordering patches - reworked the Smack patch (Casey) - conditionalized the SELinux IB init code (Stephen) - fixed missing Smack "__init" annotation (Fan) - fixed a potential unused variable warning in IMA/EVM (John) - fixed the placeholder commit descriptions (various) RFC/v1: - initial version -- Paul Moore (34): lsm: split the notifier code out into lsm_notifier.c lsm: split the init code out into lsm_init.c lsm: consolidate lsm_allowed() and prepare_lsm() into lsm_prepare() lsm: introduce looping macros for the initialization code lsm: integrate report_lsm_order() code into caller lsm: integrate lsm_early_cred() and lsm_early_task() into caller lsm: rename ordered_lsm_init() to lsm_init_ordered() lsm: replace the name field with a pointer to the lsm_id struct lsm: rename the lsm order variables for consistency lsm: rework lsm_active_cnt and lsm_idlist[] lsm: get rid of the lsm_names list and do some cleanup lsm: rework the LSM enable/disable setter/getter functions lsm: rename exists_ordered_lsm() to lsm_order_exists() lsm: rename/rework append_ordered_lsm() into lsm_order_append() lsm: rename/rework ordered_lsm_parse() to lsm_order_parse() lsm: cleanup the LSM blob size code lsm: cleanup initialize_lsm() and rename to lsm_init_single() lsm: fold lsm_init_ordered() into security_init() lsm: add/tweak function header comment blocks in lsm_init.c lsm: cleanup the debug and console output in lsm_init.c lsm: output available LSMs when debugging lsm: group lsm_order_parse() with the other lsm_order_*() functions lsm: introduce an initcall mechanism into the LSM framework loadpin: move initcalls to the LSM framework ipe: move initcalls to the LSM framework smack: move initcalls to the LSM framework tomoyo: move initcalls to the LSM framework safesetid: move initcalls to the LSM framework apparmor: move initcalls to the LSM framework lockdown: move initcalls to the LSM framework ima,evm: move initcalls to the LSM framework selinux: move initcalls to the LSM framework lsm: consolidate all of the LSM framework initcalls lsm: add a LSM_STARTED_ALL notification event include/linux/lsm_hooks.h | 73 +- include/linux/security.h | 3 security/Makefile | 2 security/apparmor/apparmorfs.c | 4 security/apparmor/crypto.c | 3 security/apparmor/include/apparmorfs.h | 2 security/apparmor/include/crypto.h | 1 security/apparmor/lsm.c | 11 security/bpf/hooks.c | 2 security/commoncap.c | 2 security/inode.c | 62 ++ security/integrity/Makefile | 2 security/integrity/evm/evm_main.c | 8 security/integrity/iint.c | 4 security/integrity/ima/ima_main.c | 8 security/integrity/initcalls.c | 41 + security/integrity/initcalls.h | 28 + security/ipe/fs.c | 4 security/ipe/ipe.c | 3 security/ipe/ipe.h | 2 security/landlock/setup.c | 2 security/loadpin/loadpin.c | 15 security/lockdown/lockdown.c | 5 security/lsm.h | 42 + security/lsm_init.c | 563 ++++++++++++++++++++++ security/lsm_notifier.c | 31 + security/lsm_syscalls.c | 2 security/min_addr.c | 5 security/safesetid/lsm.c | 3 security/safesetid/lsm.h | 2 security/safesetid/securityfs.c | 3 security/security.c | 623 +------------------------ security/selinux/Makefile | 2 security/selinux/hooks.c | 11 security/selinux/ibpkey.c | 5 security/selinux/include/audit.h | 9 security/selinux/include/initcalls.h | 19 security/selinux/initcalls.c | 52 ++ security/selinux/netif.c | 5 security/selinux/netlink.c | 5 security/selinux/netnode.c | 5 security/selinux/netport.c | 5 security/selinux/selinuxfs.c | 5 security/selinux/ss/services.c | 26 - security/smack/smack.h | 14 security/smack/smack_lsm.c | 11 security/smack/smack_netfilter.c | 4 security/smack/smackfs.c | 4 security/tomoyo/common.h | 2 security/tomoyo/securityfs_if.c | 4 security/tomoyo/tomoyo.c | 3 security/yama/yama_lsm.c | 2 52 files changed, 1043 insertions(+), 711 deletions(-)
