From: Dean Nelson Date: Tue, 26 Oct 2010 21:22:08 +0000 (-0700) Subject: mm/hugetlb.c: add missing spin_lock() to hugetlb_cow() X-Git-Tag: firefly_0821_release~9833^2~79^2^2~176 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8cf6b1558e1cc4fe2f4c584dd12c2a1ddaa38388;p=firefly-linux-kernel-4.4.55.git mm/hugetlb.c: add missing spin_lock() to hugetlb_cow() commit 44e2aa937e698ea95dd86b2a4fabd734ef2c76db upstream. Add missing spin_lock() of the page_table_lock before an error return in hugetlb_cow(). Callers of hugtelb_cow() expect it to be held upon return. Signed-off-by: Dean Nelson Cc: Mel Gorman Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/mm/hugetlb.c b/mm/hugetlb.c index c03273807182..8ee804bdbbab 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2380,8 +2380,11 @@ retry_avoidcopy: * When the original hugepage is shared one, it does not have * anon_vma prepared. */ - if (unlikely(anon_vma_prepare(vma))) + if (unlikely(anon_vma_prepare(vma))) { + /* Caller expects lock to be held */ + spin_lock(&mm->page_table_lock); return VM_FAULT_OOM; + } copy_huge_page(new_page, old_page, address, vma); __SetPageUptodate(new_page);