diff options
Diffstat (limited to 'security/security.c')
-rw-r--r-- | security/security.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/security/security.c b/security/security.c index 2e1f48e8a6f2..b6d3456978a4 100644 --- a/security/security.c +++ b/security/security.c | |||
@@ -63,10 +63,10 @@ static __initdata bool debug; | |||
63 | 63 | ||
64 | static bool __init is_enabled(struct lsm_info *lsm) | 64 | static bool __init is_enabled(struct lsm_info *lsm) |
65 | { | 65 | { |
66 | if (!lsm->enabled || *lsm->enabled) | 66 | if (!lsm->enabled) |
67 | return true; | 67 | return false; |
68 | 68 | ||
69 | return false; | 69 | return *lsm->enabled; |
70 | } | 70 | } |
71 | 71 | ||
72 | /* Mark an LSM's enabled flag. */ | 72 | /* Mark an LSM's enabled flag. */ |
@@ -117,7 +117,11 @@ static void __init append_ordered_lsm(struct lsm_info *lsm, const char *from) | |||
117 | if (WARN(last_lsm == LSM_COUNT, "%s: out of LSM slots!?\n", from)) | 117 | if (WARN(last_lsm == LSM_COUNT, "%s: out of LSM slots!?\n", from)) |
118 | return; | 118 | return; |
119 | 119 | ||
120 | /* Enable this LSM, if it is not already set. */ | ||
121 | if (!lsm->enabled) | ||
122 | lsm->enabled = &lsm_enabled_true; | ||
120 | ordered_lsms[last_lsm++] = lsm; | 123 | ordered_lsms[last_lsm++] = lsm; |
124 | |||
121 | init_debug("%s ordering: %s (%sabled)\n", from, lsm->name, | 125 | init_debug("%s ordering: %s (%sabled)\n", from, lsm->name, |
122 | is_enabled(lsm) ? "en" : "dis"); | 126 | is_enabled(lsm) ? "en" : "dis"); |
123 | } | 127 | } |
@@ -210,6 +214,10 @@ static void __init major_lsm_init(void) | |||
210 | if ((lsm->flags & LSM_FLAG_LEGACY_MAJOR) == 0) | 214 | if ((lsm->flags & LSM_FLAG_LEGACY_MAJOR) == 0) |
211 | continue; | 215 | continue; |
212 | 216 | ||
217 | /* Enable this LSM, if it is not already set. */ | ||
218 | if (!lsm->enabled) | ||
219 | lsm->enabled = &lsm_enabled_true; | ||
220 | |||
213 | maybe_initialize_lsm(lsm); | 221 | maybe_initialize_lsm(lsm); |
214 | } | 222 | } |
215 | } | 223 | } |