Skip to content

Commit

Permalink
LSM: Provide init debugging infrastructure
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Kees Cook authored and James Morris committed Oct 11, 2018
1 parent 07aed2f commit 9b8c7c1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2274,6 +2274,8 @@
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
Expand Down
18 changes: 18 additions & 0 deletions security/security.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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();
}
}
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 9b8c7c1

Please sign in to comment.