mm/khugepaged.c: convert VM_BUG_ON() to collapse fail
authorKirill A. Shutemov <[email protected]>
Thu, 22 Mar 2018 23:17:28 +0000 (16:17 -0700)
committerLinus Torvalds <[email protected]>
Fri, 23 Mar 2018 00:07:01 +0000 (17:07 -0700)
commitfece2029a9e65b9a990831afe2a2b83290cbbe26
tree8c7e6a04d9cc018a4b71c5e068aa8d48b44fbb38
parent28ee90fe6048fa7b7ceaeb8831c0e4e454a4cf89
mm/khugepaged.c: convert VM_BUG_ON() to collapse fail

khugepaged is not yet able to convert PTE-mapped huge pages back to PMD
mapped.  We do not collapse such pages.  See check
khugepaged_scan_pmd().

But if between khugepaged_scan_pmd() and __collapse_huge_page_isolate()
somebody managed to instantiate THP in the range and then split the PMD
back to PTEs we would have a problem --
VM_BUG_ON_PAGE(PageCompound(page)) will get triggered.

It's possible since we drop mmap_sem during collapse to re-take for
write.

Replace the VM_BUG_ON() with graceful collapse fail.

Link: http://lkml.kernel.org/r/[email protected]
Fixes: b1caa957ae6d ("khugepaged: ignore pmd tables with THP mapped with ptes")
Signed-off-by: Kirill A. Shutemov <[email protected]>
Cc: Laura Abbott <[email protected]>
Cc: Jerome Marchand <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/khugepaged.c