diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-17 21:33:15 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-17 21:33:15 -0500 |
commit | 25eedabe019851bc513abd601ed514df524cb482 (patch) | |
tree | 924e8cfcb1516b29468696b7384a1a9195806bbb /mm | |
parent | c671e1e30259da587d7a0162895200601979ee65 (diff) |
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 <minchan@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/huge_memory.c | 2 |
1 files changed, 1 insertions, 1 deletions
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, | |||
1561 | int ret = 0; | 1561 | int ret = 0; |
1562 | 1562 | ||
1563 | if (!pmd_trans_huge_lock(pmd, vma, &ptl)) | 1563 | if (!pmd_trans_huge_lock(pmd, vma, &ptl)) |
1564 | goto out; | 1564 | goto out_unlocked; |
1565 | 1565 | ||
1566 | orig_pmd = *pmd; | 1566 | orig_pmd = *pmd; |
1567 | if (is_huge_zero_pmd(orig_pmd)) { | 1567 | if (is_huge_zero_pmd(orig_pmd)) { |