Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

lsm: rename the lsm order variables for consistency

Rename the builtin_lsm_order variable to lsm_order_builtin,
chosen_lsm_order to lsm_order_cmdline, chosen_major_lsm to
lsm_order_legacy, ordered_lsms[] to lsm_order[], and exclusive
to lsm_exclusive.

This patch also renames the associated kernel command line parsing
functions and adds some basic function comment blocks. The parsing
function choose_major_lsm() was renamed to lsm_choose_security(),
choose_lsm_order() to lsm_choose_lsm(), and enable_debug() to
lsm_debug_enable().

Reviewed-by: Kees Cook <kees@kernel.org>
Reviewed-by: John Johansen <john.johansen@canonical.com>
Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>

+48 -38
+48 -38
security/lsm_init.c
··· 16 16 extern struct lsm_info __start_lsm_info[], __end_lsm_info[]; 17 17 extern struct lsm_info __start_early_lsm_info[], __end_early_lsm_info[]; 18 18 19 - /* Boot-time LSM user choice */ 20 - static __initconst const char *const builtin_lsm_order = CONFIG_LSM; 21 - static __initdata const char *chosen_lsm_order; 22 - static __initdata const char *chosen_major_lsm; 19 + /* Build and boot-time LSM ordering. */ 20 + static __initconst const char *const lsm_order_builtin = CONFIG_LSM; 21 + static __initdata const char *lsm_order_cmdline; 22 + static __initdata const char *lsm_order_legacy; 23 23 24 24 /* Ordered list of LSMs to initialize. */ 25 - static __initdata struct lsm_info *ordered_lsms[MAX_LSM_COUNT + 1]; 26 - static __initdata struct lsm_info *exclusive; 25 + static __initdata struct lsm_info *lsm_order[MAX_LSM_COUNT + 1]; 26 + static __initdata struct lsm_info *lsm_exclusive; 27 27 28 28 static __initdata bool debug; 29 29 #define init_debug(...) \ ··· 33 33 } while (0) 34 34 35 35 #define lsm_order_for_each(iter) \ 36 - for ((iter) = ordered_lsms; *(iter); (iter)++) 36 + for ((iter) = lsm_order; *(iter); (iter)++) 37 37 #define lsm_for_each_raw(iter) \ 38 38 for ((iter) = __start_lsm_info; \ 39 39 (iter) < __end_lsm_info; (iter)++) ··· 41 41 for ((iter) = __start_early_lsm_info; \ 42 42 (iter) < __end_early_lsm_info; (iter)++) 43 43 44 - static int lsm_append(const char *new, char **result); 45 - 46 - /* Save user chosen LSM */ 47 - static int __init choose_major_lsm(char *str) 44 + /** 45 + * lsm_choose_security - Legacy "major" LSM selection 46 + * @str: kernel command line parameter 47 + */ 48 + static int __init lsm_choose_security(char *str) 48 49 { 49 - chosen_major_lsm = str; 50 + lsm_order_legacy = str; 50 51 return 1; 51 52 } 52 - __setup("security=", choose_major_lsm); 53 + __setup("security=", lsm_choose_security); 53 54 54 - /* Explicitly choose LSM initialization order. */ 55 - static int __init choose_lsm_order(char *str) 55 + /** 56 + * lsm_choose_lsm - Modern LSM selection 57 + * @str: kernel command line parameter 58 + */ 59 + static int __init lsm_choose_lsm(char *str) 56 60 { 57 - chosen_lsm_order = str; 61 + lsm_order_cmdline = str; 58 62 return 1; 59 63 } 60 - __setup("lsm=", choose_lsm_order); 64 + __setup("lsm=", lsm_choose_lsm); 61 65 62 - /* Enable LSM order debugging. */ 63 - static int __init enable_debug(char *str) 66 + /** 67 + * lsm_debug_enable - Enable LSM framework debugging 68 + * @str: kernel command line parameter 69 + * 70 + * Currently we only provide debug info during LSM initialization, but we may 71 + * want to expand this in the future. 72 + */ 73 + static int __init lsm_debug_enable(char *str) 64 74 { 65 75 debug = true; 66 76 return 1; 67 77 } 68 - __setup("lsm.debug", enable_debug); 78 + __setup("lsm.debug", lsm_debug_enable); 69 79 70 80 /* Mark an LSM's enabled flag. */ 71 81 static int lsm_enabled_true __initdata = 1; ··· 137 127 /* Enable this LSM, if it is not already set. */ 138 128 if (!lsm->enabled) 139 129 lsm->enabled = &lsm_enabled_true; 140 - ordered_lsms[last_lsm] = lsm; 130 + lsm_order[last_lsm] = lsm; 141 131 lsm_idlist[last_lsm++] = lsm->id; 142 132 143 133 init_debug("%s ordered: %s (%s)\n", from, lsm->id->name, ··· 167 157 if (!is_enabled(lsm)) { 168 158 set_enabled(lsm, false); 169 159 return; 170 - } else if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && exclusive) { 160 + } else if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && lsm_exclusive) { 171 161 init_debug("exclusive disabled: %s\n", lsm->id->name); 172 162 set_enabled(lsm, false); 173 163 return; ··· 175 165 176 166 /* Mark the LSM as enabled. */ 177 167 set_enabled(lsm, true); 178 - if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && !exclusive) { 168 + if ((lsm->flags & LSM_FLAG_EXCLUSIVE) && !lsm_exclusive) { 179 169 init_debug("exclusive chosen: %s\n", lsm->id->name); 180 - exclusive = lsm; 170 + lsm_exclusive = lsm; 181 171 } 182 172 183 173 /* Register the LSM blob sizes. */ ··· 236 226 } 237 227 238 228 /* Process "security=", if given. */ 239 - if (chosen_major_lsm) { 229 + if (lsm_order_legacy) { 240 230 struct lsm_info *major; 241 231 242 232 /* ··· 247 237 */ 248 238 lsm_for_each_raw(major) { 249 239 if ((major->flags & LSM_FLAG_LEGACY_MAJOR) && 250 - strcmp(major->id->name, chosen_major_lsm) != 0) { 240 + strcmp(major->id->name, lsm_order_legacy) != 0) { 251 241 set_enabled(major, false); 252 242 init_debug("security=%s disabled: %s (only one legacy major LSM)\n", 253 - chosen_major_lsm, major->id->name); 243 + lsm_order_legacy, major->id->name); 254 244 } 255 245 } 256 246 } ··· 275 265 } 276 266 277 267 /* Process "security=", if given. */ 278 - if (chosen_major_lsm) { 268 + if (lsm_order_legacy) { 279 269 lsm_for_each_raw(lsm) { 280 270 if (exists_ordered_lsm(lsm)) 281 271 continue; 282 - if (strcmp(lsm->id->name, chosen_major_lsm) == 0) 272 + if (strcmp(lsm->id->name, lsm_order_legacy) == 0) 283 273 append_ordered_lsm(lsm, "security="); 284 274 } 285 275 } ··· 311 301 struct lsm_info **lsm; 312 302 struct lsm_info *early; 313 303 314 - if (chosen_lsm_order) { 315 - if (chosen_major_lsm) { 304 + if (lsm_order_cmdline) { 305 + if (lsm_order_legacy) { 316 306 pr_warn("security=%s is ignored because it is superseded by lsm=%s\n", 317 - chosen_major_lsm, chosen_lsm_order); 318 - chosen_major_lsm = NULL; 307 + lsm_order_legacy, lsm_order_cmdline); 308 + lsm_order_legacy = NULL; 319 309 } 320 - ordered_lsm_parse(chosen_lsm_order, "cmdline"); 310 + ordered_lsm_parse(lsm_order_cmdline, "cmdline"); 321 311 } else 322 - ordered_lsm_parse(builtin_lsm_order, "builtin"); 312 + ordered_lsm_parse(lsm_order_builtin, "builtin"); 323 313 324 314 lsm_order_for_each(lsm) { 325 315 lsm_prepare(*lsm); ··· 483 473 { 484 474 struct lsm_info *lsm; 485 475 486 - init_debug("legacy security=%s\n", chosen_major_lsm ? : " *unspecified*"); 487 - init_debug(" CONFIG_LSM=%s\n", builtin_lsm_order); 488 - init_debug("boot arg lsm=%s\n", chosen_lsm_order ? : " *unspecified*"); 476 + init_debug("legacy security=%s\n", lsm_order_legacy ? : " *unspecified*"); 477 + init_debug(" CONFIG_LSM=%s\n", lsm_order_builtin); 478 + init_debug("boot arg lsm=%s\n", lsm_order_cmdline ? : " *unspecified*"); 489 479 490 480 /* 491 481 * Append the names of the early LSM modules now that kmalloc() is