lkml.org 
[lkml]   [2017]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 146/164] um: Fix to call read_initrd after init_bootmem
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Masami Hiramatsu <mhiramat@kernel.org>

    commit 5b4236e17cc1bd9fa14b2b0c7a4ae632d41f2e20 upstream.

    Since read_initrd() invokes alloc_bootmem() for allocating
    memory to load initrd image, it must be called after init_bootmem.

    This makes read_initrd() called directly from setup_arch()
    after init_bootmem() and mem_total_pages().

    Fixes: b63236972e1 ("um: Setup physical memory in setup_arch()")
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/um/kernel/initrd.c | 4 +---
    arch/um/kernel/um_arch.c | 6 ++++++
    2 files changed, 7 insertions(+), 3 deletions(-)

    --- a/arch/um/kernel/initrd.c
    +++ b/arch/um/kernel/initrd.c
    @@ -14,7 +14,7 @@
    static char *initrd __initdata = NULL;
    static int load_initrd(char *filename, void *buf, int size);

    -static int __init read_initrd(void)
    +int __init read_initrd(void)
    {
    void *area;
    long long size;
    @@ -46,8 +46,6 @@ static int __init read_initrd(void)
    return 0;
    }

    -__uml_postsetup(read_initrd);
    -
    static int __init uml_initrd_setup(char *line, int *add)
    {
    initrd = line;
    --- a/arch/um/kernel/um_arch.c
    +++ b/arch/um/kernel/um_arch.c
    @@ -336,11 +336,17 @@ int __init linux_main(int argc, char **a
    return start_uml();
    }

    +int __init __weak read_initrd(void)
    +{
    + return 0;
    +}
    +
    void __init setup_arch(char **cmdline_p)
    {
    stack_protections((unsigned long) &init_thread_info);
    setup_physmem(uml_physmem, uml_reserved, physmem_size, highmem);
    mem_total_pages(physmem_size, iomem_size, highmem);
    + read_initrd();

    paging_init();
    strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);

    \
     
     \ /
      Last update: 2017-05-23 23:29    [W:4.334 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site