[merged mm-stable] hugetlb-evaluate-subpool-free-state-while-locked.patch removed from -mm tree
Andrew Morton <[email protected]>
| Newsgroups | org.kernel.vger.mm-commits |
|---|---|
| Message-ID | <[email protected]> |
The quilt patch titled
Subject: hugetlb: evaluate subpool free state while locked
has been removed from the -mm tree. Its filename was
hugetlb-evaluate-subpool-free-state-while-locked.patch
This patch was dropped because it was merged into the mm-stable branch
of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Yichong Chen <[email protected]>
Subject: hugetlb: evaluate subpool free state while locked
Date: Tue, 21 Jul 2026 11:52:07 +0800
unlock_or_release_subpool() drops spool->lock before calling
subpool_is_free(). However, subpool_is_free() reads fields that are
updated under spool->lock, including count, used_hpages and rsv_hpages.
Keep the free-state evaluation under the same lock that protects those
fields. The reservation accounting and kfree() calls still happen after
dropping spool->lock.
Link: https://lore.kernel.org/[email protected]
Signed-off-by: Yichong Chen <[email protected]>
Reviewed-by: Joshua Hahn <[email protected]>
Reviewed-by: Jane Chu <[email protected]>
Cc: David Hildenbrand <[email protected]>
Cc: Muchun Song <[email protected]>
Cc: Oscar Salvador <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---
mm/hugetlb.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/mm/hugetlb.c~hugetlb-evaluate-subpool-free-state-while-locked
+++ a/mm/hugetlb.c
@@ -141,12 +141,14 @@ static inline bool subpool_is_free(struc
static inline void unlock_or_release_subpool(struct hugepage_subpool *spool,
unsigned long irq_flags)
{
- spin_unlock_irqrestore(&spool->lock, irq_flags);
+ bool free_subpool = subpool_is_free(spool);
/* If no pages are used, and no other handles to the subpool
* remain, give up any reservations based on minimum size and
* free the subpool */
- if (subpool_is_free(spool)) {
+ spin_unlock_irqrestore(&spool->lock, irq_flags);
+
+ if (free_subpool) {
if (spool->min_hpages != -1)
hugetlb_acct_memory(spool->hstate,
-spool->min_hpages);
_
Patches currently in -mm which might be from [email protected] are