Use ptep_clear() instead of pte_clear(): when CONFIG_PAGE_TABLE_CHECK=y, ptep_clear() adds some accounting, missing which would cause a BUG later. Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx> Reported-by: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx> Closes: https://lore.kernel.org/linux-mm/0df84f9f-e9b0-80b1-4c9e-95abc1a73a96@xxxxxxxxxxxxx/ --- mm/khugepaged.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index bb76a5d454de..78fc1a24a1cc 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1603,7 +1603,7 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr, * TLB flush can be left until pmdp_collapse_flush() does it. * PTE dirty? Shmem page is already dirty; file is read-only. */ - pte_clear(mm, addr, pte); + ptep_clear(mm, addr, pte); page_remove_rmap(page, vma, false); nr_ptes++; } -- 2.35.3