Lines Matching refs:lsm
167 static bool __init is_enabled(struct lsm_info *lsm) in is_enabled() argument
169 if (!lsm->enabled) in is_enabled()
172 return *lsm->enabled; in is_enabled()
178 static void __init set_enabled(struct lsm_info *lsm, bool enabled) in set_enabled() argument
184 if (!lsm->enabled) { in set_enabled()
186 lsm->enabled = &lsm_enabled_true; in set_enabled()
188 lsm->enabled = &lsm_enabled_false; in set_enabled()
189 } else if (lsm->enabled == &lsm_enabled_true) { in set_enabled()
191 lsm->enabled = &lsm_enabled_false; in set_enabled()
192 } else if (lsm->enabled == &lsm_enabled_false) { in set_enabled()
194 lsm->enabled = &lsm_enabled_true; in set_enabled()
196 *lsm->enabled = enabled; in set_enabled()
201 static bool __init exists_ordered_lsm(struct lsm_info *lsm) in exists_ordered_lsm() argument
206 if (*check == lsm) in exists_ordered_lsm()
214 static void __init append_ordered_lsm(struct lsm_info *lsm, const char *from) in append_ordered_lsm() argument
217 if (exists_ordered_lsm(lsm)) in append_ordered_lsm()
224 if (!lsm->enabled) in append_ordered_lsm()
225 lsm->enabled = &lsm_enabled_true; in append_ordered_lsm()
226 ordered_lsms[last_lsm++] = lsm; in append_ordered_lsm()
228 init_debug("%s ordered: %s (%s)\n", from, lsm->name, in append_ordered_lsm()
229 is_enabled(lsm) ? "enabled" : "disabled"); in append_ordered_lsm()
233 static bool __init lsm_allowed(struct lsm_info *lsm) in lsm_allowed() argument
236 if (!is_enabled(lsm)) in lsm_allowed()
240 if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && exclusive) { in lsm_allowed()
241 init_debug("exclusive disabled: %s\n", lsm->name); in lsm_allowed()
289 static void __init prepare_lsm(struct lsm_info *lsm) in prepare_lsm() argument
291 int enabled = lsm_allowed(lsm); in prepare_lsm()
294 set_enabled(lsm, enabled); in prepare_lsm()
298 if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && !exclusive) { in prepare_lsm()
299 exclusive = lsm; in prepare_lsm()
300 init_debug("exclusive chosen: %s\n", lsm->name); in prepare_lsm()
303 lsm_set_blob_sizes(lsm->blobs); in prepare_lsm()
308 static void __init initialize_lsm(struct lsm_info *lsm) in initialize_lsm() argument
310 if (is_enabled(lsm)) { in initialize_lsm()
313 init_debug("initializing %s\n", lsm->name); in initialize_lsm()
314 ret = lsm->init(); in initialize_lsm()
315 WARN(ret, "%s failed to initialize: %d\n", lsm->name, ret); in initialize_lsm()
328 struct lsm_info *lsm; in ordered_lsm_parse() local
332 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { in ordered_lsm_parse()
333 if (lsm->order == LSM_ORDER_FIRST) in ordered_lsm_parse()
334 append_ordered_lsm(lsm, " first"); in ordered_lsm_parse()
364 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { in ordered_lsm_parse()
365 if (strcmp(lsm->name, name) == 0) { in ordered_lsm_parse()
366 if (lsm->order == LSM_ORDER_MUTABLE) in ordered_lsm_parse()
367 append_ordered_lsm(lsm, origin); in ordered_lsm_parse()
379 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { in ordered_lsm_parse()
380 if (exists_ordered_lsm(lsm)) in ordered_lsm_parse()
382 if (strcmp(lsm->name, chosen_major_lsm) == 0) in ordered_lsm_parse()
383 append_ordered_lsm(lsm, "security="); in ordered_lsm_parse()
388 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { in ordered_lsm_parse()
389 if (lsm->order == LSM_ORDER_LAST) in ordered_lsm_parse()
390 append_ordered_lsm(lsm, " last"); in ordered_lsm_parse()
394 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { in ordered_lsm_parse()
395 if (exists_ordered_lsm(lsm)) in ordered_lsm_parse()
397 set_enabled(lsm, false); in ordered_lsm_parse()
399 origin, lsm->name); in ordered_lsm_parse()
431 struct lsm_info **lsm, *early; in report_lsm_order() local
441 for (lsm = ordered_lsms; *lsm; lsm++) in report_lsm_order()
442 if (is_enabled(*lsm)) in report_lsm_order()
443 pr_cont("%s%s", first++ == 0 ? "" : ",", (*lsm)->name); in report_lsm_order()
450 struct lsm_info **lsm; in ordered_lsm_init() local
462 for (lsm = ordered_lsms; *lsm; lsm++) in ordered_lsm_init()
463 prepare_lsm(*lsm); in ordered_lsm_init()
498 for (lsm = ordered_lsms; *lsm; lsm++) in ordered_lsm_init()
499 initialize_lsm(*lsm); in ordered_lsm_init()
504 struct lsm_info *lsm; in early_security_init() local
506 for (lsm = __start_early_lsm_info; lsm < __end_early_lsm_info; lsm++) { in early_security_init()
507 if (!lsm->enabled) in early_security_init()
508 lsm->enabled = &lsm_enabled_true; in early_security_init()
509 prepare_lsm(lsm); in early_security_init()
510 initialize_lsm(lsm); in early_security_init()
523 struct lsm_info *lsm; in security_init() local
533 for (lsm = __start_early_lsm_info; lsm < __end_early_lsm_info; lsm++) { in security_init()
534 init_debug(" early started: %s (%s)\n", lsm->name, in security_init()
535 is_enabled(lsm) ? "enabled" : "disabled"); in security_init()
536 if (lsm->enabled) in security_init()
537 lsm_append(lsm->name, &lsm_names); in security_init()
570 static bool match_last_lsm(const char *list, const char *lsm) in match_last_lsm() argument
574 if (WARN_ON(!list || !lsm)) in match_last_lsm()
582 return !strcmp(last, lsm); in match_last_lsm()