lkml.org 
[lkml]   [2020]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.6 139/177] parisc: Fix kernel panic in mem_init()
    Date
    From: Helge Deller <deller@gmx.de>

    [ Upstream commit bf71bc16e02162388808949b179d59d0b571b965 ]

    The Debian kernel v5.6 triggers this kernel panic:

    Kernel panic - not syncing: Bad Address (null pointer deref?)
    Bad Address (null pointer deref?): Code=26 (Data memory access rights trap) at addr 0000000000000000
    CPU: 0 PID: 0 Comm: swapper Not tainted 5.6.0-2-parisc64 #1 Debian 5.6.14-1
    IAOQ[0]: mem_init+0xb0/0x150
    IAOQ[1]: mem_init+0xb4/0x150
    RP(r2): start_kernel+0x6c8/0x1190
    Backtrace:
    [<0000000040101ab4>] start_kernel+0x6c8/0x1190
    [<0000000040108574>] start_parisc+0x158/0x1b8

    on a HP-PARISC rp3440 machine with this memory layout:
    Memory Ranges:
    0) Start 0x0000000000000000 End 0x000000003fffffff Size 1024 MB
    1) Start 0x0000004040000000 End 0x00000040ffdfffff Size 3070 MB

    Fix the crash by avoiding virt_to_page() and similar functions in
    mem_init() until the memory zones have been fully set up.

    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org # v5.0+
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/parisc/mm/init.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
    index 5224fb38d766..01d7071b23f7 100644
    --- a/arch/parisc/mm/init.c
    +++ b/arch/parisc/mm/init.c
    @@ -562,7 +562,7 @@ void __init mem_init(void)
    > BITS_PER_LONG);

    high_memory = __va((max_pfn << PAGE_SHIFT));
    - set_max_mapnr(page_to_pfn(virt_to_page(high_memory - 1)) + 1);
    + set_max_mapnr(max_low_pfn);
    memblock_free_all();

    #ifdef CONFIG_PA11
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-06-01 20:17    [W:4.628 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site