diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 5d7601b..f4daef4 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1973,12 +1973,15 @@ retry_avoidcopy: */ if (outside_reserve) { BUG_ON(huge_pte_none(pte)); + spin_unlock(&mm->page_table_lock); if (unmap_ref_private(mm, vma, old_page, address)) { + spin_lock(&mm->page_table_lock); BUG_ON(page_count(old_page) != 1); BUG_ON(huge_pte_none(pte)); goto retry_avoidcopy; } WARN_ON_ONCE(1); + spin_lock(&mm->page_table_lock); } return -PTR_ERR(new_page);