[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <65ca8d04-d7cc-cdb3-1dab-034b9e37a12c@huawei.com>
Date: Thu, 17 Nov 2022 15:56:15 +0800
From: Kefeng Wang <wangkefeng.wang@...wei.com>
To: Liu Shixin <liushixin2@...wei.com>,
Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>,
Denys Vlasenko <dvlasenk@...hat.com>,
Anshuman Khandual <anshuman.khandual@....com>,
"David Hildenbrand" <dhildenb@...hat.com>,
Rafael Aquini <raquini@...hat.com>,
"Pasha Tatashin" <pasha.tatashin@...een.com>
CC: <linux-arm-kernel@...ts.infradead.org>,
<linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v2 1/2] arm64/mm: fix incorrect file_map_count for
non-leaf pmd/pud
On 2022/11/17 15:56, Liu Shixin wrote:
> The page table check trigger BUG_ON() unexpectedly when collapse hugepage:
>
> ------------[ cut here ]------------
> kernel BUG at mm/page_table_check.c:82!
> Internal error: Oops - BUG: 00000000f2000800 [#1] SMP
> Dumping ftrace buffer:
> (ftrace buffer empty)
> Modules linked in:
> CPU: 6 PID: 68 Comm: khugepaged Not tainted 6.1.0-rc3+ #750
> Hardware name: linux,dummy-virt (DT)
> pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> pc : page_table_check_clear.isra.0+0x258/0x3f0
> lr : page_table_check_clear.isra.0+0x240/0x3f0
> [...]
> Call trace:
> page_table_check_clear.isra.0+0x258/0x3f0
> __page_table_check_pmd_clear+0xbc/0x108
> pmdp_collapse_flush+0xb0/0x160
> collapse_huge_page+0xa08/0x1080
> hpage_collapse_scan_pmd+0xf30/0x1590
> khugepaged_scan_mm_slot.constprop.0+0x52c/0xac8
> khugepaged+0x338/0x518
> kthread+0x278/0x2f8
> ret_from_fork+0x10/0x20
> [...]
>
> Since pmd_user_accessible_page() doesn't check if a pmd is leaf, it
> decrease file_map_count for a non-leaf pmd comes from collapse_huge_page().
> and so trigger BUG_ON() unexpectedly.
>
> Fix this problem by using pmd_leaf() insteal of pmd_present() in
> pmd_user_accessible_page(). Moreover, use pud_leaf() for
> pud_user_accessible_page() too.
>
> Fixes: 42b2547137f5 ("arm64/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK")
> Reported-by: Denys Vlasenko <dvlasenk@...hat.com>
> Signed-off-by: Liu Shixin <liushixin2@...wei.com>
> Reviewed-by: David Hildenbrand <david@...hat.com>
> Acked-by: Pasha Tatashin <pasha.tatashin@...een.com>
Reviewed-by: Kefeng Wang <wangkefeng.wang@...wei.com>
Powered by blists - more mailing lists