Hi Greg,

please drop this patch. 
Issue is not related to additional spaces in the command
line, nor to init.data initializaitons.

It seems qiute hard to track down, issue disappears if i
just add some lines of code in uboot.c or setup.c.

Continuing on this.

Regards,
Angelo Dureghello


On Sat, Sep 01, 2018 at 03:16:21AM +0200, Angelo Dureghello wrote:
> 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 <ang...@sysam.it>
> ---
>  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
> 

Reply via email to