capability: Initialize as LSM_ORDER_FIRST
authorKees Cook <keescook@chromium.org>
Fri, 14 Sep 2018 22:40:45 +0000 (15:40 -0700)
committerKees Cook <keescook@chromium.org>
Tue, 8 Jan 2019 21:18:44 +0000 (13:18 -0800)
This converts capabilities to use the new LSM_ORDER_FIRST position.

Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
include/linux/lsm_hooks.h
security/commoncap.c
security/security.c

index 27d4db9588bb9cc37a7237f5be2ad0615301de48..0c908c091a03139cc04f1d3934e552530fb51429 100644 (file)
@@ -2095,6 +2095,4 @@ static inline void security_delete_hooks(struct security_hook_list *hooks,
 #define __lsm_ro_after_init    __ro_after_init
 #endif /* CONFIG_SECURITY_WRITABLE_HOOKS */
 
-extern void __init capability_add_hooks(void);
-
 #endif /* ! __LINUX_LSM_HOOKS_H */
index 232db019f0519f6af292eb5db97d300856eb1bd9..52e04136bfa81aa4af70a5e32a8ab41bb9bc8ee4 100644 (file)
@@ -1362,10 +1362,17 @@ struct security_hook_list capability_hooks[] __lsm_ro_after_init = {
        LSM_HOOK_INIT(vm_enough_memory, cap_vm_enough_memory),
 };
 
-void __init capability_add_hooks(void)
+static int __init capability_init(void)
 {
        security_add_hooks(capability_hooks, ARRAY_SIZE(capability_hooks),
                                "capability");
+       return 0;
 }
 
+DEFINE_LSM(capability) = {
+       .name = "capability",
+       .order = LSM_ORDER_FIRST,
+       .init = capability_init,
+};
+
 #endif /* CONFIG_SECURITY */
index 8b673bb2a0dd08fb443f2bf6e5ab96227c56fd43..9411f659454b4ad318cabc9161ad58305e787ad5 100644 (file)
@@ -277,11 +277,6 @@ int __init security_init(void)
             i++)
                INIT_HLIST_HEAD(&list[i]);
 
-       /*
-        * Load minor LSMs, with the capability module always first.
-        */
-       capability_add_hooks();
-
        /* Load LSMs in specified order. */
        ordered_lsm_init();