]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
LSM: Provide init debugging infrastructure
authorKees Cook <keescook@chromium.org>
Thu, 11 Oct 2018 00:18:25 +0000 (17:18 -0700)
committerJames Morris <james.morris@microsoft.com>
Thu, 11 Oct 2018 03:40:22 +0000 (20:40 -0700)
Booting with "lsm.debug" will report future details on how LSM ordering
decisions are being made.

Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
Reviewed-by: John Johansen <john.johansen@canonical.com>
Reviewed-by: James Morris <james.morris@microsoft.com>
Signed-off-by: James Morris <james.morris@microsoft.com>
Documentation/admin-guide/kernel-parameters.txt
security/security.c

index 9871e649ffeffe8798cd20a1450377a4f4777fca..32d323ee92185fbeab8d8f67da32e53fd226936b 100644 (file)
        ltpc=           [NET]
                        Format: <io>,<irq>,<dma>
 
+       lsm.debug       [SECURITY] Enable LSM initialization debugging output.
+
        machvec=        [IA-64] Force the use of a particular machine-vector
                        (machvec) in a generic kernel.
                        Example: machvec=hpzx1_swiotlb
index e74f46fba5914cb089bf8abdaa4b53fecd455816..395f804f6a9171ad0e5f7ea95c38b5b9e95f1987 100644 (file)
@@ -12,6 +12,8 @@
  *     (at your option) any later version.
  */
 
+#define pr_fmt(fmt) "LSM: " fmt
+
 #include <linux/bpf.h>
 #include <linux/capability.h>
 #include <linux/dcache.h>
@@ -43,11 +45,19 @@ char *lsm_names;
 static __initdata char chosen_lsm[SECURITY_NAME_MAX + 1] =
        CONFIG_DEFAULT_SECURITY;
 
+static __initdata bool debug;
+#define init_debug(...)                                                \
+       do {                                                    \
+               if (debug)                                      \
+                       pr_info(__VA_ARGS__);                   \
+       } while (0)
+
 static void __init major_lsm_init(void)
 {
        struct lsm_info *lsm;
 
        for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) {
+               init_debug("initializing %s\n", lsm->name);
                lsm->init();
        }
 }
@@ -91,6 +101,14 @@ static int __init choose_lsm(char *str)
 }
 __setup("security=", choose_lsm);
 
+/* Enable LSM order debugging. */
+static int __init enable_debug(char *str)
+{
+       debug = true;
+       return 1;
+}
+__setup("lsm.debug", enable_debug);
+
 static bool match_last_lsm(const char *list, const char *lsm)
 {
        const char *last;