summaryrefslogtreecommitdiffstats
path: root/mm/huge_memory.c
diff options
context:
space:
mode:
authorLinus Torvalds2016-01-18 03:33:15 +0100
committerLinus Torvalds2016-01-18 03:33:15 +0100
commit25eedabe019851bc513abd601ed514df524cb482 (patch)
tree924e8cfcb1516b29468696b7384a1a9195806bbb /mm/huge_memory.c
parentdrm/vc4: fix warning in validate printf. (diff)
downloadkernel-qcow2-linux-25eedabe019851bc513abd601ed514df524cb482.tar.gz
kernel-qcow2-linux-25eedabe019851bc513abd601ed514df524cb482.tar.xz
kernel-qcow2-linux-25eedabe019851bc513abd601ed514df524cb482.zip
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/huge_memory.c')
-rw-r--r--mm/huge_memory.c2
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,
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)) {