From: Linus Torvalds Date: Mon, 18 Jan 2016 02:33:15 +0000 (-0800) Subject: vm: fix incorrect unlock error path in madvise_free_huge_pmd X-Git-Tag: v4.5-rc1~72 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=25eedabe019851bc513abd601ed514df524cb482;p=linux.git vm: fix incorrect unlock error path in madvise_free_huge_pmd Commit b8d3c4c3009d ("mm/huge_memory.c: don't split THP page when MADV_FREE syscall is called") introduced this new function, but got the error handling for when pmd_trans_huge_lock() fails wrong. In the failure case, the lock has not been taken, and we should not unlock on the way out. Cc: Minchan Kim Cc: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/huge_memory.c b/mm/huge_memory.c index b2db98136af9..50342eff7960 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1561,7 +1561,7 @@ int madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, int ret = 0; if (!pmd_trans_huge_lock(pmd, vma, &ptl)) - goto out; + goto out_unlocked; orig_pmd = *pmd; if (is_huge_zero_pmd(orig_pmd)) {