Two corrections to my initial report.
1. Suggested fix: aca1f2d5de17 does not apply as is to 6.12.y. Its
Fixes: target is the non-uniform __folio_split() (58729c04cf10, 6.15+).
In 6.12.y the page-cache split goes through
split_huge_page_to_list_to_order(), which calls xas_split_alloc()
without mapping_set_update() (mm/huge_memory.c in v6.12.113).
So the options for 6.12.y are rather:
- revert ad812805fea7 ("xarray: honor XA_FLAGS_ACCOUNT in
xas_split_alloc()"), or
- an adapted fix: mapping_set_update(&xas, mapping) before
xas_split_alloc() in split_huge_page_to_list_to_order(). Note that
in 6.12.y mapping_set_update() is still a static function in
mm/filemap.c (it only moved to mm/internal.h in 6.13), so this
also needs that move or an open-coded equivalent.
Neither has been tested on our side.
2. Upstream report: I wrote that we would report this to
[email protected]. We will not contact upstream ourselves; we
leave it to you to forward it if you confirm it is not Debian-specific,
or to ask us to do it (a draft for stable@ / regressions@ is ready).
We have an affected guest available to test a patched kernel (booted
without cgroup.memory=nokmem).