Without MMU, when CONFIG_UBOOT is set, and CONFIG_BOOTPARAM is not set, a wrong command-line was produced (boot hangs, no console), due to an initial erroneus space appended to the command line in process_uboot_commandline(). In MMU mode, the m68k_command_line array was not initially terminated to zero, and process_uboot_commandline() was still producing an invalid command-line (boot hangs, no console). Signed-off-by: Angelo Dureghello <angelo@xxxxxxxx> --- arch/m68k/kernel/setup_mm.c | 1 + arch/m68k/kernel/setup_no.c | 2 ++ arch/m68k/kernel/uboot.c | 16 ++++++++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c index 5d3596c180f9..8fc2999f11fe 100644 --- a/arch/m68k/kernel/setup_mm.c +++ b/arch/m68k/kernel/setup_mm.c @@ -265,6 +265,7 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long)_edata; init_mm.brk = (unsigned long)_end; + m68k_command_line[0] = 0; #if defined(CONFIG_BOOTPARAM) strncpy(m68k_command_line, CONFIG_BOOTPARAM_STRING, CL_SIZE); m68k_command_line[CL_SIZE - 1] = 0; diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c index cfd5475bfc31..d65bb433583c 100644 --- a/arch/m68k/kernel/setup_no.c +++ b/arch/m68k/kernel/setup_no.c @@ -94,6 +94,8 @@ void __init setup_arch(char **cmdline_p) init_mm.end_data = (unsigned long) &_edata; init_mm.brk = (unsigned long) 0; + command_line[0] = 0; + config_BSP(&command_line[0], sizeof(command_line)); #if defined(CONFIG_BOOTPARAM) diff --git a/arch/m68k/kernel/uboot.c b/arch/m68k/kernel/uboot.c index b29c3b241e1b..c4045bbe0a8c 100644 --- a/arch/m68k/kernel/uboot.c +++ b/arch/m68k/kernel/uboot.c @@ -92,13 +92,17 @@ __init void process_uboot_commandline(char *commandp, int size) { int len, n; + len = size; + n = strnlen(commandp, size); - commandp += n; - len = size - n; - if (len) { - /* Add the whitespace separator */ - *commandp++ = ' '; - len--; + if (n) { + commandp += n; + len -= n; + if (len) { + /* Add the whitespace separator */ + *commandp++ = ' '; + len--; + } } parse_uboot_commandline(commandp, len); -- 2.18.0