]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lsm: group lsm_order_parse() with the other lsm_order_*() functions
authorPaul Moore <paul@paul-moore.com>
Mon, 21 Jul 2025 20:36:03 +0000 (16:36 -0400)
committerPaul Moore <paul@paul-moore.com>
Wed, 22 Oct 2025 23:24:24 +0000 (19:24 -0400)
Move the lsm_order_parse() function near the other lsm_order_*()
functions to improve readability.

No code changes.

Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
Reviewed-by: John Johansen <john.johhansen@canonical.com>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/lsm_init.c

index cfcf3bf7127ff15c8a5e5cf222ca08da0fb4aae4..fd69bde9112eeeb13845d87208ba3b543d95835b 100644 (file)
@@ -169,6 +169,76 @@ static void __init lsm_order_append(struct lsm_info *lsm, const char *src)
        lsm_pr_dbg("enabling LSM %s:%s\n", src, lsm->id->name);
 }
 
+/**
+ * lsm_order_parse - Parse the comma delimited LSM list
+ * @list: LSM list
+ * @src: source of the list
+ */
+static void __init lsm_order_parse(const char *list, const char *src)
+{
+       struct lsm_info *lsm;
+       char *sep, *name, *next;
+
+       /* Handle any Legacy LSM exclusions if one was specified. */
+       if (lsm_order_legacy) {
+               /*
+                * To match the original "security=" behavior, this explicitly
+                * does NOT fallback to another Legacy Major if the selected
+                * one was separately disabled: disable all non-matching
+                * Legacy Major LSMs.
+                */
+               lsm_for_each_raw(lsm) {
+                       if ((lsm->flags & LSM_FLAG_LEGACY_MAJOR) &&
+                            strcmp(lsm->id->name, lsm_order_legacy)) {
+                               lsm_enabled_set(lsm, false);
+                               lsm_pr_dbg("skip legacy LSM conflict %s:%s\n",
+                                          src, lsm->id->name);
+                       }
+               }
+       }
+
+       /* LSM_ORDER_FIRST */
+       lsm_for_each_raw(lsm) {
+               if (lsm->order == LSM_ORDER_FIRST)
+                       lsm_order_append(lsm, "first");
+       }
+
+       /* Normal or "mutable" LSMs */
+       sep = kstrdup(list, GFP_KERNEL);
+       next = sep;
+       /* Walk the list, looking for matching LSMs. */
+       while ((name = strsep(&next, ",")) != NULL) {
+               lsm_for_each_raw(lsm) {
+                       if (!strcmp(lsm->id->name, name) &&
+                           lsm->order == LSM_ORDER_MUTABLE)
+                               lsm_order_append(lsm, src);
+               }
+       }
+       kfree(sep);
+
+       /* Legacy LSM if specified. */
+       if (lsm_order_legacy) {
+               lsm_for_each_raw(lsm) {
+                       if (!strcmp(lsm->id->name, lsm_order_legacy))
+                               lsm_order_append(lsm, src);
+               }
+       }
+
+       /* LSM_ORDER_LAST */
+       lsm_for_each_raw(lsm) {
+               if (lsm->order == LSM_ORDER_LAST)
+                       lsm_order_append(lsm, "last");
+       }
+
+       /* Disable all LSMs not previously enabled. */
+       lsm_for_each_raw(lsm) {
+               if (lsm_order_exists(lsm))
+                       continue;
+               lsm_enabled_set(lsm, false);
+               lsm_pr_dbg("skip disabled LSM %s:%s\n", src, lsm->id->name);
+       }
+}
+
 /**
  * lsm_blob_size_update - Update the LSM blob size and offset information
  * @sz_req: the requested additional blob size
@@ -241,76 +311,6 @@ static void __init lsm_init_single(struct lsm_info *lsm)
        WARN(ret, "%s failed to initialize: %d\n", lsm->id->name, ret);
 }
 
-/**
- * lsm_order_parse - Parse the comma delimited LSM list
- * @list: LSM list
- * @src: source of the list
- */
-static void __init lsm_order_parse(const char *list, const char *src)
-{
-       struct lsm_info *lsm;
-       char *sep, *name, *next;
-
-       /* Handle any Legacy LSM exclusions if one was specified. */
-       if (lsm_order_legacy) {
-               /*
-                * To match the original "security=" behavior, this explicitly
-                * does NOT fallback to another Legacy Major if the selected
-                * one was separately disabled: disable all non-matching
-                * Legacy Major LSMs.
-                */
-               lsm_for_each_raw(lsm) {
-                       if ((lsm->flags & LSM_FLAG_LEGACY_MAJOR) &&
-                            strcmp(lsm->id->name, lsm_order_legacy)) {
-                               lsm_enabled_set(lsm, false);
-                               lsm_pr_dbg("skip legacy LSM conflict %s:%s\n",
-                                          src, lsm->id->name);
-                       }
-               }
-       }
-
-       /* LSM_ORDER_FIRST */
-       lsm_for_each_raw(lsm) {
-               if (lsm->order == LSM_ORDER_FIRST)
-                       lsm_order_append(lsm, "first");
-       }
-
-       /* Normal or "mutable" LSMs */
-       sep = kstrdup(list, GFP_KERNEL);
-       next = sep;
-       /* Walk the list, looking for matching LSMs. */
-       while ((name = strsep(&next, ",")) != NULL) {
-               lsm_for_each_raw(lsm) {
-                       if (!strcmp(lsm->id->name, name) &&
-                           lsm->order == LSM_ORDER_MUTABLE)
-                               lsm_order_append(lsm, src);
-               }
-       }
-       kfree(sep);
-
-       /* Legacy LSM if specified. */
-       if (lsm_order_legacy) {
-               lsm_for_each_raw(lsm) {
-                       if (!strcmp(lsm->id->name, lsm_order_legacy))
-                               lsm_order_append(lsm, src);
-               }
-       }
-
-       /* LSM_ORDER_LAST */
-       lsm_for_each_raw(lsm) {
-               if (lsm->order == LSM_ORDER_LAST)
-                       lsm_order_append(lsm, "last");
-       }
-
-       /* Disable all LSMs not previously enabled. */
-       lsm_for_each_raw(lsm) {
-               if (lsm_order_exists(lsm))
-                       continue;
-               lsm_enabled_set(lsm, false);
-               lsm_pr_dbg("skip disabled LSM %s:%s\n", src, lsm->id->name);
-       }
-}
-
 /**
  * lsm_static_call_init - Initialize a LSM's static calls
  * @hl: LSM hook list