Lines Matching refs:lsm

102 static bool __init is_enabled(struct lsm_info *lsm)
104 if (!lsm->enabled)
107 return *lsm->enabled;
113 static void __init set_enabled(struct lsm_info *lsm, bool enabled)
119 if (!lsm->enabled) {
121 lsm->enabled = &lsm_enabled_true;
123 lsm->enabled = &lsm_enabled_false;
124 } else if (lsm->enabled == &lsm_enabled_true) {
126 lsm->enabled = &lsm_enabled_false;
127 } else if (lsm->enabled == &lsm_enabled_false) {
129 lsm->enabled = &lsm_enabled_true;
131 *lsm->enabled = enabled;
136 static bool __init exists_ordered_lsm(struct lsm_info *lsm)
141 if (*check == lsm)
149 static void __init append_ordered_lsm(struct lsm_info *lsm, const char *from)
152 if (exists_ordered_lsm(lsm))
159 if (!lsm->enabled)
160 lsm->enabled = &lsm_enabled_true;
161 ordered_lsms[last_lsm++] = lsm;
163 init_debug("%s ordered: %s (%s)\n", from, lsm->name,
164 is_enabled(lsm) ? "enabled" : "disabled");
168 static bool __init lsm_allowed(struct lsm_info *lsm)
171 if (!is_enabled(lsm))
175 if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && exclusive) {
176 init_debug("exclusive disabled: %s\n", lsm->name);
218 static void __init prepare_lsm(struct lsm_info *lsm)
220 int enabled = lsm_allowed(lsm);
223 set_enabled(lsm, enabled);
227 if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && !exclusive) {
228 exclusive = lsm;
229 init_debug("exclusive chosen: %s\n", lsm->name);
232 lsm_set_blob_sizes(lsm->blobs);
237 static void __init initialize_lsm(struct lsm_info *lsm)
239 if (is_enabled(lsm)) {
242 init_debug("initializing %s\n", lsm->name);
243 ret = lsm->init();
244 WARN(ret, "%s failed to initialize: %d\n", lsm->name, ret);
251 struct lsm_info *lsm;
255 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) {
256 if (lsm->order == LSM_ORDER_FIRST)
257 append_ordered_lsm(lsm, " first");
287 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) {
288 if (strcmp(lsm->name, name) == 0) {
289 if (lsm->order == LSM_ORDER_MUTABLE)
290 append_ordered_lsm(lsm, origin);
302 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) {
303 if (exists_ordered_lsm(lsm))
305 if (strcmp(lsm->name, chosen_major_lsm) == 0)
306 append_ordered_lsm(lsm, "security=");
311 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) {
312 if (lsm->order == LSM_ORDER_LAST)
313 append_ordered_lsm(lsm, " last");
317 for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) {
318 if (exists_ordered_lsm(lsm))
320 set_enabled(lsm, false);
322 origin, lsm->name);
335 struct lsm_info **lsm, *early;
338 pr_info("initializing lsm=");
345 for (lsm = ordered_lsms; *lsm; lsm++)
346 if (is_enabled(*lsm))
347 pr_cont("%s%s", first++ == 0 ? "" : ",", (*lsm)->name);
354 struct lsm_info **lsm;
361 pr_warn("security=%s is ignored because it is superseded by lsm=%s\n",
369 for (lsm = ordered_lsms; *lsm; lsm++)
370 prepare_lsm(*lsm);
397 for (lsm = ordered_lsms; *lsm; lsm++)
398 initialize_lsm(*lsm);
405 struct lsm_info *lsm;
412 for (lsm = __start_early_lsm_info; lsm < __end_early_lsm_info; lsm++) {
413 if (!lsm->enabled)
414 lsm->enabled = &lsm_enabled_true;
415 prepare_lsm(lsm);
416 initialize_lsm(lsm);
429 struct lsm_info *lsm;
433 init_debug("boot arg lsm=%s\n", chosen_lsm_order ? : " *unspecified*");
439 for (lsm = __start_early_lsm_info; lsm < __end_early_lsm_info; lsm++) {
440 init_debug(" early started: %s (%s)\n", lsm->name,
441 is_enabled(lsm) ? "enabled" : "disabled");
442 if (lsm->enabled)
443 lsm_append(lsm->name, &lsm_names);
466 __setup("lsm=", choose_lsm_order);
474 __setup("lsm.debug", enable_debug);
476 static bool match_last_lsm(const char *list, const char *lsm)
480 if (WARN_ON(!list || !lsm))
488 return !strcmp(last, lsm);
516 * @lsm: the name of the security module
521 const char *lsm)
526 hooks[i].lsm = lsm;
535 if (lsm_append(lsm, &lsm_names) < 0)
3824 * @lsm: LSM name
3832 int security_getprocattr(struct task_struct *p, const char *lsm,
3838 if (lsm != NULL && strcmp(lsm, hp->lsm))
3847 * @lsm: LSM name
3857 int security_setprocattr(const char *lsm, const char *name, void *value,
3863 if (lsm != NULL && strcmp(lsm, hp->lsm))