Re: [Bug 202149] New: NULL Pointer Dereference in __split_huge_pmd on PPC64LE

2019-02-14 Thread Matt Corallo
Hey, sorry for the delay on this. I had some apparently-unrelated hangs that I 
believe were due to mpt3sas instability, and at the risk of speaking too soon 
for a bug I couldn't reliably reproduce, this patch appears to have resolved 
it, thanks!

> On Jan 21, 2019, at 07:35, Aneesh Kumar K.V  
> wrote:
> 
> 
> Can you test this patch?
> 
> From e511e79af9a314854848ea8fda9dfa6d7e07c5e4 Mon Sep 17 00:00:00 2001
> From: "Aneesh Kumar K.V" 
> Date: Mon, 21 Jan 2019 16:43:17 +0530
> Subject: [PATCH] arch/powerpc/radix: Fix kernel crash with mremap
> 
> With support for split pmd lock, we use pmd page pmd_huge_pte pointer to store
> the deposited page table. In those config when we move page tables we need to
> make sure we move the depoisted page table to the right pmd page. Otherwise 
> this
> can result in crash when we withdraw of deposited page table because we can 
> find
> the pmd_huge_pte NULL.
> 
> c04a1230 __split_huge_pmd+0x1070/0x1940
> c04a0ff4 __split_huge_pmd+0xe34/0x1940 (unreliable)
> c04a4000 vma_adjust_trans_huge+0x110/0x1c0
> c042fe04 __vma_adjust+0x2b4/0x9b0
> c04316e8 __split_vma+0x1b8/0x280
> c043192c __do_munmap+0x13c/0x550
> c0439390 sys_mremap+0x220/0x7e0
> c000b488 system_call+0x5c/0x70
> 
> Fixes: 675d995297d4 ("powerpc/book3s64: Enable split pmd ptlock.")
> Signed-off-by: Aneesh Kumar K.V 
> ---
> arch/powerpc/include/asm/book3s/64/pgtable.h | 2 --
> 1 file changed, 2 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h 
> b/arch/powerpc/include/asm/book3s/64/pgtable.h
> index 92eaea164700..86e62384256d 100644
> --- a/arch/powerpc/include/asm/book3s/64/pgtable.h
> +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
> @@ -1262,8 +1262,6 @@ static inline int pmd_move_must_withdraw(struct 
> spinlock *new_pmd_ptl,
> struct spinlock *old_pmd_ptl,
> struct vm_area_struct *vma)
> {
> -if (radix_enabled())
> -return false;
>/*
> * Archs like ppc64 use pgtable to store per pmd
> * specific information. So when we switch the pmd,
> -- 
> 2.20.1
> 



Re: [Bug 202149] New: NULL Pointer Dereference in __split_huge_pmd on PPC64LE

2019-01-09 Thread Matt Corallo
It's normal daily usage on a workstation (TALOS 2). I've seen it at least 
twice, both times in rustc, though I've run rustc more times than I can count. 
Note that the program that triggered it was running in lxc and it only happened 
after upgrading to 4.19.

> On Jan 9, 2019, at 06:50, Aneesh Kumar K.V  wrote:
> 
> Matt Corallo  writes:
> 
>> .config follows. I have not tested with 64K pages as, sadly, I have a 
>> large BTRFS volume that was formatted on x86, and am thus stuck with 4K 
>> pages. Note that this is roughly the Debian kernel, so it has whatever 
>> patches Debian defaults to applying, a list of which follows.
>> 
> 
> What is the test you are running? I tried a 4K page size config on P9. I
> am running ltp test suite there. Also tried few thp memremap tests.
> Nothing hit that.
> 
> root@:~/tests/ltp/testcases/kernel/mem/thp# getconf  PAGESIZE
> 4096
> root@ltc-boston123:~/tests/ltp/testcases/kernel/mem/thp# grep thp 
> /proc/vmstat 
> thp_fault_alloc 641141
> thp_fault_fallback 0
> thp_collapse_alloc 90
> thp_collapse_alloc_failed 0
> thp_file_alloc 0
> thp_file_mapped 0
> thp_split_page 1
> thp_split_page_failed 0
> thp_deferred_split_page 641150
> thp_split_pmd 24
> thp_zero_page_alloc 1
> thp_zero_page_alloc_failed 0
> thp_swpout 0
> thp_swpout_fallback 0
> root@:~/tests/ltp/testcases/kernel/mem/thp# 
> 
> -aneesh
>