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

Commit 28957a54 authored by Naoya Horiguchi's avatar Naoya Horiguchi Committed by Andi Kleen
Browse files

hugetlb: add missing unlock in avoidcopy path in hugetlb_cow()



This patch fixes possible deadlock in hugepage lock_page()
by adding missing unlock_page().

libhugetlbfs test will hit this bug when the next patch in this
patchset ("hugetlb, HWPOISON: move PG_HWPoison bit check") is applied.

Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Signed-off-by: default avatarJun'ichi Nomura <j-nomura@ce.jp.nec.com>
Acked-by: default avatarFengguang Wu <fengguang.wu@intel.com>
Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
parent e3390f67
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2324,9 +2324,11 @@ static int hugetlb_cow(struct mm_struct *mm, struct vm_area_struct *vma,
	 * and just make the page writable */
	avoidcopy = (page_mapcount(old_page) == 1);
	if (avoidcopy) {
		if (!trylock_page(old_page))
		if (!trylock_page(old_page)) {
			if (PageAnon(old_page))
				page_move_anon_rmap(old_page, vma, address);
		} else
			unlock_page(old_page);
		set_huge_ptep_writable(vma, address, ptep);
		return 0;
	}