Lines Matching refs:lsm
104 static void __init lsm_enabled_set(struct lsm_info *lsm, bool enabled) in lsm_enabled_set() argument
110 if (!lsm->enabled || in lsm_enabled_set()
111 lsm->enabled == &lsm_enabled_true || in lsm_enabled_set()
112 lsm->enabled == &lsm_enabled_false) { in lsm_enabled_set()
113 lsm->enabled = enabled ? &lsm_enabled_true : &lsm_enabled_false; in lsm_enabled_set()
115 *lsm->enabled = enabled; in lsm_enabled_set()
123 static inline bool lsm_is_enabled(struct lsm_info *lsm) in lsm_is_enabled() argument
125 return (lsm->enabled ? *lsm->enabled : false); in lsm_is_enabled()
132 static bool __init lsm_order_exists(struct lsm_info *lsm) in lsm_order_exists() argument
137 if (*check == lsm) in lsm_order_exists()
153 static void __init lsm_order_append(struct lsm_info *lsm, const char *src) in lsm_order_append() argument
156 if (lsm_order_exists(lsm)) in lsm_order_append()
160 if (lsm->enabled && !lsm_is_enabled(lsm)) { in lsm_order_append()
162 src, lsm->id->name); in lsm_order_append()
168 src, lsm->id->name); in lsm_order_append()
169 lsm_enabled_set(lsm, false); in lsm_order_append()
173 if (lsm->flags & LSM_FLAG_EXCLUSIVE) { in lsm_order_append()
176 src, lsm->id->name); in lsm_order_append()
177 lsm_enabled_set(lsm, false); in lsm_order_append()
181 src, lsm->id->name); in lsm_order_append()
182 lsm_exclusive = lsm; in lsm_order_append()
186 lsm_enabled_set(lsm, true); in lsm_order_append()
187 lsm_order[lsm_active_cnt] = lsm; in lsm_order_append()
188 lsm_idlist[lsm_active_cnt++] = lsm->id; in lsm_order_append()
190 lsm_pr_dbg("enabling LSM %s:%s\n", src, lsm->id->name); in lsm_order_append()
200 struct lsm_info *lsm; in lsm_order_parse() local
211 lsm_for_each_raw(lsm) { in lsm_order_parse()
212 if ((lsm->flags & LSM_FLAG_LEGACY_MAJOR) && in lsm_order_parse()
213 strcmp(lsm->id->name, lsm_order_legacy)) { in lsm_order_parse()
214 lsm_enabled_set(lsm, false); in lsm_order_parse()
216 src, lsm->id->name); in lsm_order_parse()
222 lsm_for_each_raw(lsm) { in lsm_order_parse()
223 if (lsm->order == LSM_ORDER_FIRST) in lsm_order_parse()
224 lsm_order_append(lsm, "first"); in lsm_order_parse()
232 lsm_for_each_raw(lsm) { in lsm_order_parse()
233 if (!strcmp(lsm->id->name, name) && in lsm_order_parse()
234 lsm->order == LSM_ORDER_MUTABLE) in lsm_order_parse()
235 lsm_order_append(lsm, src); in lsm_order_parse()
242 lsm_for_each_raw(lsm) { in lsm_order_parse()
243 if (!strcmp(lsm->id->name, lsm_order_legacy)) in lsm_order_parse()
244 lsm_order_append(lsm, src); in lsm_order_parse()
249 lsm_for_each_raw(lsm) { in lsm_order_parse()
250 if (lsm->order == LSM_ORDER_LAST) in lsm_order_parse()
251 lsm_order_append(lsm, "last"); in lsm_order_parse()
255 lsm_for_each_raw(lsm) { in lsm_order_parse()
256 if (lsm_order_exists(lsm)) in lsm_order_parse()
258 lsm_enabled_set(lsm, false); in lsm_order_parse()
259 lsm_pr_dbg("skip disabled LSM %s:%s\n", src, lsm->id->name); in lsm_order_parse()
285 static void __init lsm_prepare(struct lsm_info *lsm) in lsm_prepare() argument
287 struct lsm_blob_sizes *blobs = lsm->blobs; in lsm_prepare()
293 blobs = lsm->blobs; in lsm_prepare()
323 static void __init lsm_init_single(struct lsm_info *lsm) in lsm_init_single() argument
327 if (!lsm_is_enabled(lsm)) in lsm_init_single()
330 lsm_pr_dbg("initializing %s\n", lsm->id->name); in lsm_init_single()
331 ret = lsm->init(); in lsm_init_single()
332 WARN(ret, "%s failed to initialize: %d\n", lsm->id->name, ret); in lsm_init_single()
385 struct lsm_info *lsm; in early_security_init() local
389 lsm_early_for_each_raw(lsm) { in early_security_init()
390 lsm_enabled_set(lsm, true); in early_security_init()
391 lsm_order_append(lsm, "early"); in early_security_init()
392 lsm_prepare(lsm); in early_security_init()
393 lsm_init_single(lsm); in early_security_init()
408 struct lsm_info **lsm; in security_init() local
438 lsm_order_for_each(lsm) in security_init()
439 lsm_prepare(*lsm); in security_init()
477 lsm_order_for_each(lsm) { in security_init()
481 lsm_init_single(*lsm); in security_init()