v1 2026-10-28

页分配器稳定修复 · v1

修复页分配器中 start_isolate_page_range() 竞态、延迟释放页 private 未清空及 page_frag 缓存重填等问题,并标记为稳定分支候选。

原始补丁链接

子 Patch(9)

1/9
mm/page_alloc: don't undo a racing start_isolate_page_range()
On 27 Oct 2026, at 11:46, Vlastimil Babka (SUSE) wrote: > From: Josef Bacik josef@toxicpanda.com > > start_isolate_page_range() fails with -EBUSY if one of the pageblocks is > already isolated, i.e.
2/9
mm/page_alloc: clear ->private of deferred free pages
free_pages_nolock/free_frozen_pages_nolock 把页暂存 trylock_free_pages 时,add_page_to_zone_llist 在 page->private 存 order;后续合并到低 buddy 后该页成 tail 仍留旧值,触发 VM_WARN_ON、Bad page state 或泄露,补丁清 ->private。
3/9
mm: page_frag: refill the cache for large fragments
From: Josef Bacik josef@toxicpanda.com A fragment which is larger than PAGE_SIZE can only be served from the 32K page of a page_frag_cache. If memory is low and the cache had to fall back to a sing
4/9
mm/page_alloc: keep the pagesets of an empty zone
From: Josef Bacik josef@toxicpanda.com When the last memory of a zone goes offline, zone_pcp_reset() frees zone->per_cpu_pageset and zone->per_cpu_zonestats. Nothing waits for those who found the z
5/9
mm, page_alloc: pass zone pointer to trace_reclaim_retry_zone
From: Josef Bacik josef@toxicpanda.com should_reclaim_retry() walks a zonelist and passes the zoneref pointer to the reclaim_retry_zone tracepoint, which loads the zone from the entry again to find
6/9
mm/compaction: trust zone->contiguous only in the span
From: Josef Bacik josef@toxicpanda.com compact_zone() keeps the positions of its scanners in cc->migrate_pfn and cc->free_pfn for the whole run. Memory offlining can shrink the zone in the meantime
7/9
mm: page_isolation: do not take slab pages for free
From: Josef Bacik josef@toxicpanda.com page_is_unmovable() regards a page with a reference count of zero as free or about to be freed. Since slab allocates frozen pages, they will be wrongly consid
8/9
mm/memory_hotplug: resize zones under their seqlock
From: Josef Bacik josef@toxicpanda.com With CONFIG_DEBUG_VM the page allocator checks that a page which is freed, split or allocated lies within its zone. The check reads zone->zone_start_pfn and z
9/9
mm/page_alloc: check pageblock pfns under span seqlock
From: Josef Bacik josef@toxicpanda.com Whenever the flags of a pageblock are read or written, a kernel with CONFIG_DEBUG_VM makes sure that the pfn lies within the zone of the page. Unlike bad_rang