Commit 25eedabe authored by Linus Torvalds's avatar Linus Torvalds

vm: fix incorrect unlock error path in madvise_free_huge_pmd

Commit b8d3c4c3 ("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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c671e1e3
...@@ -1561,7 +1561,7 @@ int madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, ...@@ -1561,7 +1561,7 @@ int madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
int ret = 0; int ret = 0;
if (!pmd_trans_huge_lock(pmd, vma, &ptl)) if (!pmd_trans_huge_lock(pmd, vma, &ptl))
goto out; goto out_unlocked;
orig_pmd = *pmd; orig_pmd = *pmd;
if (is_huge_zero_pmd(orig_pmd)) { if (is_huge_zero_pmd(orig_pmd)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment