The patch titled Subject: init/main.c: remove unnecessary repair_env_string in do_initcall_level has been added to the -mm tree. Its filename is init-mainc-remove-unnecessary-repair_env_string-in-do_initcall_level.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/init-mainc-remove-unnecessary-repair_env_string-in-do_initcall_level.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/init-mainc-remove-unnecessary-repair_env_string-in-do_initcall_level.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Arvind Sankar <nivedita@xxxxxxxxxxxx> Subject: init/main.c: remove unnecessary repair_env_string in do_initcall_level Since commit 08746a65c296 ("init: fix in-place parameter modification regression"), parse_args in do_initcall_level is called on a copy of saved_command_line. It is unnecessary to call repair_env_string during this parsing, as this copy is not used for anything later. Remove the now unnecessary arguments from repair_env_string as well. Link: http://lkml.kernel.org/r/20191212180023.24339-3-nivedita@xxxxxxxxxxxx Signed-off-by: Arvind Sankar <nivedita@xxxxxxxxxxxx> Cc: Krzysztof Mazur <krzysiek@xxxxxxxxxxxx> Cc: Chris Metcalf <cmetcalf@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- init/main.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) --- a/init/main.c~init-mainc-remove-unnecessary-repair_env_string-in-do_initcall_level +++ a/init/main.c @@ -246,8 +246,7 @@ static int __init loglevel(char *str) early_param("loglevel", loglevel); /* Change NUL term back to "=", to make "param" the whole string. */ -static int __init repair_env_string(char *param, char *val, - const char *unused, void *arg) +static void __init repair_env_string(char *param, char *val) { if (val) { /* param=val or param="val"? */ @@ -260,7 +259,6 @@ static int __init repair_env_string(char } else BUG(); } - return 0; } /* Anything after -- gets handed straight to init. */ @@ -272,7 +270,7 @@ static int __init set_init_arg(char *par if (panic_later) return 0; - repair_env_string(param, val, unused, NULL); + repair_env_string(param, val); for (i = 0; argv_init[i]; i++) { if (i == MAX_INIT_ARGS) { @@ -292,7 +290,7 @@ static int __init set_init_arg(char *par static int __init unknown_bootoption(char *param, char *val, const char *unused, void *arg) { - repair_env_string(param, val, unused, NULL); + repair_env_string(param, val); /* Handle obsolete-style parameters */ if (obsolete_checksetup(param)) @@ -990,6 +988,12 @@ static const char *initcall_level_names[ "late", }; +static int __init ignore_unknown_bootoption(char *param, char *val, + const char *unused, void *arg) +{ + return 0; +} + static void __init do_initcall_level(int level) { initcall_entry_t *fn; @@ -999,7 +1003,7 @@ static void __init do_initcall_level(int initcall_command_line, __start___param, __stop___param - __start___param, level, level, - NULL, &repair_env_string); + NULL, ignore_unknown_bootoption); trace_initcall_level(initcall_level_names[level]); for (fn = initcall_levels[level]; fn < initcall_levels[level+1]; fn++) _ Patches currently in -mm which might be from nivedita@xxxxxxxxxxxx are init-mainc-log-arguments-and-environment-passed-to-init.patch init-mainc-remove-unnecessary-repair_env_string-in-do_initcall_level.patch init-mainc-fix-quoted-value-handling-in-unknown_bootoption.patch