Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f64d69c authored by Dean Nelson's avatar Dean Nelson Committed by Linus Torvalds
Browse files

mm/hugetlb.c: avoid double unlock_page() in hugetlb_fault()



Have hugetlb_fault() call unlock_page(page) only if it had previously
called lock_page(page).

Setting CONFIG_DEBUG_VM=y and then running the libhugetlbfs test suite,
resulted in the tripping of VM_BUG_ON(!PageLocked(page)) in
unlock_page() having been called by hugetlb_fault() when page ==
pagecache_page.  This patch remedied the problem.

Signed-off-by: default avatarDean Nelson <dnelson@redhat.com>
Cc: <stable@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 94c35de9
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2738,6 +2738,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
		unlock_page(pagecache_page);
		put_page(pagecache_page);
	}
	if (page != pagecache_page)
		unlock_page(page);

out_mutex: