From: Naoya Horiguchi Date: Fri, 2 Jul 2010 05:47:20 +0000 (+0900) Subject: hugetlb: add missing unlock in avoidcopy path in hugetlb_cow() X-Git-Tag: upstream/snapshot3+hdmi~13268^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=28957a5467bab9ed51a237d21e31055fad987887;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git 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: Naoya Horiguchi Signed-off-by: Jun'ichi Nomura Acked-by: Fengguang Wu Signed-off-by: Andi Kleen --- diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 3c275ff..303fb0c 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2324,9 +2324,11 @@ retry_avoidcopy: * 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; }