lkml.org 
[lkml]   [2019]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2] mm/hugetlb: Don't put_page in lock of hugetlb_lock
    On Mon, May 06, 2019 at 10:06:38PM +0800, Zhiqiang Liu wrote:
    > From: Kai Shen <shenkai8@huawei.com>
    >
    > spinlock recursion happened when do LTP test:
    > #!/bin/bash
    > ./runltp -p -f hugetlb &
    > ./runltp -p -f hugetlb &
    > ./runltp -p -f hugetlb &
    > ./runltp -p -f hugetlb &
    > ./runltp -p -f hugetlb &
    >
    > The dtor returned by get_compound_page_dtor in __put_compound_page
    > may be the function of free_huge_page which will lock the hugetlb_lock,
    > so don't put_page in lock of hugetlb_lock.
    >
    > BUG: spinlock recursion on CPU#0, hugemmap05/1079
    > lock: hugetlb_lock+0x0/0x18, .magic: dead4ead, .owner: hugemmap05/1079, .owner_cpu: 0
    > Call trace:
    > dump_backtrace+0x0/0x198
    > show_stack+0x24/0x30
    > dump_stack+0xa4/0xcc
    > spin_dump+0x84/0xa8
    > do_raw_spin_lock+0xd0/0x108
    > _raw_spin_lock+0x20/0x30
    > free_huge_page+0x9c/0x260
    > __put_compound_page+0x44/0x50
    > __put_page+0x2c/0x60
    > alloc_surplus_huge_page.constprop.19+0xf0/0x140
    > hugetlb_acct_memory+0x104/0x378
    > hugetlb_reserve_pages+0xe0/0x250
    > hugetlbfs_file_mmap+0xc0/0x140
    > mmap_region+0x3e8/0x5b0
    > do_mmap+0x280/0x460
    > vm_mmap_pgoff+0xf4/0x128
    > ksys_mmap_pgoff+0xb4/0x258
    > __arm64_sys_mmap+0x34/0x48
    > el0_svc_common+0x78/0x130
    > el0_svc_handler+0x38/0x78
    > el0_svc+0x8/0xc
    >
    > Fixes: 9980d744a0 ("mm, hugetlb: get rid of surplus page accounting tricks")
    > Signed-off-by: Kai Shen <shenkai8@huawei.com>
    > Signed-off-by: Feilong Lin <linfeilong@huawei.com>
    > Reported-by: Wang Wang <wangwang2@huawei.com>
    > Acked-by: Michal Hocko <mhocko@suse.com>

    Reviewed-by: Oscar Salvador <osalvador@suse.de>

    --
    Oscar Salvador
    SUSE L3

    \
     
     \ /
      Last update: 2019-05-06 16:49    [W:4.178 / U:0.892 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site