On Tue, Nov 30, 2021 at 11:08PM +0100, andrey.konovalov@xxxxxxxxx wrote: [...] > enum kasan_arg_stacktrace { > KASAN_ARG_STACKTRACE_DEFAULT, > KASAN_ARG_STACKTRACE_OFF, > @@ -40,6 +46,7 @@ enum kasan_arg_stacktrace { > > static enum kasan_arg kasan_arg __ro_after_init; > static enum kasan_arg_mode kasan_arg_mode __ro_after_init; > +static enum kasan_arg_vmalloc kasan_arg_vmalloc __ro_after_init; > static enum kasan_arg_stacktrace kasan_arg_stacktrace __ro_after_init; It just occurred to me that all of these (except kasan_arg_mode) are only used by __init functions, so they could actually be marked __initdata instead of __ro_after_init to free up some bytes after init. Not sure if you think it's worth it, I leave it to you. [...] > + switch (kasan_arg_vmalloc) { > + case KASAN_ARG_VMALLOC_DEFAULT: > + /* Default to enabling vmalloc tagging. */ > + static_branch_enable(&kasan_flag_vmalloc); > + break; > + case KASAN_ARG_VMALLOC_OFF: > + /* Do nothing, kasan_flag_vmalloc keeps its default value. */ > + break; > + case KASAN_ARG_VMALLOC_ON: > + static_branch_enable(&kasan_flag_vmalloc); > + break; > + } The KASAN_ARG_STACKTRACE_DEFAULT and KASAN_ARG_VMALLOC_ON cases can be combined.