* [merged mm-hotfixes-stable] mmhugetlb-take-hugetlb_lock-before-decrementing-h-resv_huge_pages.patch removed from -mm tree
@ 2022-10-21 4:34 Andrew Morton
0 siblings, 0 replies; only message in thread
From: Andrew Morton @ 2022-10-21 4:34 UTC (permalink / raw)
To: mm-commits, stable, songmuchun, n-horiguchi, mike.kravetz,
gkmccready, riel, akpm
The quilt patch titled
Subject: mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages
has been removed from the -mm tree. Its filename was
mmhugetlb-take-hugetlb_lock-before-decrementing-h-resv_huge_pages.patch
This patch was dropped because it was merged into the mm-hotfixes-stable branch
of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Rik van Riel <riel@surriel.com>
Subject: mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages
Date: Mon, 17 Oct 2022 20:25:05 -0400
The h->*_huge_pages counters are protected by the hugetlb_lock, but
alloc_huge_page has a corner case where it can decrement the counter
outside of the lock.
This could lead to a corrupted value of h->resv_huge_pages, which we have
observed on our systems.
Take the hugetlb_lock before decrementing h->resv_huge_pages to avoid a
potential race.
Link: https://lkml.kernel.org/r/20221017202505.0e6a4fcd@imladris.surriel.com
Fixes: a88c76954804 ("mm: hugetlb: fix hugepage memory leak caused by wrong reserve count")
Signed-off-by: Rik van Riel <riel@surriel.com>
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Glen McCready <gkmccready@meta.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Muchun Song <songmuchun@bytedance.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/hugetlb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/mm/hugetlb.c~mmhugetlb-take-hugetlb_lock-before-decrementing-h-resv_huge_pages
+++ a/mm/hugetlb.c
@@ -2924,11 +2924,11 @@ struct page *alloc_huge_page(struct vm_a
page = alloc_buddy_huge_page_with_mpol(h, vma, addr);
if (!page)
goto out_uncharge_cgroup;
+ spin_lock_irq(&hugetlb_lock);
if (!avoid_reserve && vma_has_reserves(vma, gbl_chg)) {
SetHPageRestoreReserve(page);
h->resv_huge_pages--;
}
- spin_lock_irq(&hugetlb_lock);
list_add(&page->lru, &h->hugepage_activelist);
set_page_refcounted(page);
/* Fall through */
_
Patches currently in -mm which might be from riel@surriel.com are
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-10-21 4:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-21 4:34 [merged mm-hotfixes-stable] mmhugetlb-take-hugetlb_lock-before-decrementing-h-resv_huge_pages.patch removed from -mm tree Andrew Morton
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.