[PATCH 0/2] mm/hugetlb: fix surplus accounting and availability checks during demotion
Longlong Xia <[email protected]>
| Newsgroups | gmane.linux.kernel,gmane.linux.kernel.mm |
|---|---|
| Message-ID | <[email protected]> |
From: Longlong Xia <[email protected]> This series fixes two problems in the hugetlb demote path. Patch 1 fixes surplus accounting in the source hstate. demote_pool_huge_page() removes every source folio as a persistent folio, but a free folio may instead account for one of the source hstate's surplus pages (for example after a vmemmap restoration failure). Removing such a folio without adjusting surplus_huge_pages makes the persistent count underflow, and later subtracting it from max_huge_pages can underflow that counter as well. Patch 2 fixes an availability overcount in the sysfs demote path. The sysfs trigger checks whether any page is available but then passes the entire request to demote_pool_huge_page(), which can remove free huge pages that back existing reservations. With two free pages and one reservation, a request for two pages removes both and leaves the reservation without a backing page. Both patches carry Fixes tags. Longlong Xia (2): mm/hugetlb: preserve source surplus accounting during demotion mm/hugetlb: cap demotion at currently available free pages mm/hugetlb.c | 57 ++++++++++++++++++++++++++++++++++++++++++---- mm/hugetlb_sysfs.c | 10 ++++---- 2 files changed, 57 insertions(+), 10 deletions(-) -- 2.43.0