Skip to content

Commit da9a298

Browse files
MiaoheLinakpm00
authored andcommitted
hugetlb: fix memoryleak in hugetlb_mcopy_atomic_pte
When alloc_huge_page fails, *pagep is set to NULL without put_page first. So the hugepage indicated by *pagep is leaked. Link: https://lkml.kernel.org/r/20220709092629.54291-1-linmiaohe@huawei.com Fixes: 8cc5fcb ("mm, hugetlb: fix racy resv_huge_pages underflow on UFFDIO_COPY") Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Acked-by: Muchun Song <songmuchun@bytedance.com> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent bdeb77b commit da9a298

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

mm/hugetlb.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5952,6 +5952,7 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm,
59525952

59535953
page = alloc_huge_page(dst_vma, dst_addr, 0);
59545954
if (IS_ERR(page)) {
5955+
put_page(*pagep);
59555956
ret = -ENOMEM;
59565957
*pagep = NULL;
59575958
goto out;

0 commit comments

Comments
 (0)