From 25eedabe019851bc513abd601ed514df524cb482 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 17 Jan 2016 18:33:15 -0800 Subject: [PATCH] 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 --- mm/huge_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)) { -- 2.11.0