linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/hugetlb: fix set_max_huge_pages() when there are surplus pages
@ 2025-02-25 14:19 Jinjiang Tu
  2025-02-26 15:57 ` David Hildenbrand
  0 siblings, 1 reply; 6+ messages in thread
From: Jinjiang Tu @ 2025-02-25 14:19 UTC (permalink / raw)
  To: muchun.song, akpm, mel, lee.schermerhorn, andi, david; +Cc: linux-mm

In set_max_huge_pages(), min_count should mean the acquired persistent
huge pages, but it contains surplus huge pages. It will leads to failing
to freeing free huge pages for a Node.

Steps to reproduce:
1) create 5 huge pages in Node 0
2) run a program to use all the huge pages
3) create 5 huge pages in Node 1
4) echo 0 > nr_hugepages for Node 1 to free the huge pages

The result:
        Node 0    Node 1
Total     5         5
Free      0         5
Surp      5         5

Fixes: 9a30523066cd ("hugetlb: add per node hstate attributes")
Signed-off-by: Jinjiang Tu <tujinjiang@huawei.com>
---
 mm/hugetlb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 163190e89ea1..783faec7360b 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -3758,7 +3758,7 @@ static int set_max_huge_pages(struct hstate *h, unsigned long count, int nid,
 	 * and won't grow the pool anywhere else. Not until one of the
 	 * sysctls are changed, or the surplus pages go out of use.
 	 */
-	min_count = h->resv_huge_pages + h->nr_huge_pages - h->free_huge_pages;
+	min_count = h->resv_huge_pages + persistent_huge_pages(h) - h->free_huge_pages;
 	min_count = max(count, min_count);
 	try_to_free_low(h, min_count, nodes_allowed);
 
-- 
2.43.0



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-03-04 13:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-25 14:19 [PATCH] mm/hugetlb: fix set_max_huge_pages() when there are surplus pages Jinjiang Tu
2025-02-26 15:57 ` David Hildenbrand
2025-02-27  3:11   ` Jinjiang Tu
2025-02-27  6:19     ` Oscar Salvador
2025-02-27  7:06       ` Jinjiang Tu
2025-03-04 13:44       ` Jinjiang Tu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox