mm/rmap: fix new bug: premature return from page_mlock_one()

In the unlikely race case that page_mlock_one() finds VM_LOCKED has been
cleared by the time it got page table lock, page_vma_mapped_walk_done()
must be called before returning, either explicitly, or by a final call
to page_vma_mapped_walk() - otherwise the page table remains locked.

Fixes: cd62734ca60d ("mm/rmap: split try_to_munlock from try_to_unmap")
Signed-off-by: Hugh Dickins <>
Reviewed-by: Alistair Popple <>
Reviewed-by: Shakeel Butt <>
Reported-by: kernel test robot <>
Cc: Andrew Morton <>
Cc: Jason Gunthorpe <>
Cc: Ralph Campbell <>
Cc: Christoph Hellwig <>
Cc: Yang Shi <>
Cc: Kirill A. Shutemov <>
Signed-off-by: Linus Torvalds <>
1 file changed