Re: [PATCH v2 02/17] mm/huge_memory: fix rejection of swap cache folios with a mapping
"Zi Yan" <[email protected]>
| Newsgroups | gmane.linux.kernel,gmane.linux.kernel.mm |
|---|---|
| Message-ID | <[email protected]> |
On Wed Aug 12, 2026 at 2:48 PM EDT, Kairui Song via B4 Relay wrote: > From: Kairui Song <[email protected]> > > A folio in the swap cache cannot be split if it has a mapping (shmem). > The split code does a defensive check for this in > __folio_freeze_and_split_unmapped, after the folio ref has been frozen > and the NR_SHMEM_THPS/NR_FILE_THPS counters have been decremented. It > rejects the split and returns -EINVAL without unfreezing the folio or > restoring the counters. That error path is buggy: if it is ever taken, > it leaves the folio frozen and stuck, skews the counters, and fires > the VM_WARN_ON_ONCE_FOLIO for a state that is actually legitimate. > > Check for this case up front in folio_check_splittable and return > -EBUSY before any state is modified, so the split routine always backs > out cleanly. > > Also fix a bracket style issue that checkpatch.pl keeps complaining > about. > > Fixes: 00527733d0dc ("mm/huge_memory: add two new (not yet used) functions for folio_split()") > Fixes: 714b056c8321 ("mm/huge_memory: convert VM_BUG* to VM_WARN* in __folio_split") > Signed-off-by: Kairui Song <[email protected]> > --- > mm/huge_memory.c | 27 ++++++++++++++++----------- > 1 file changed, 16 insertions(+), 11 deletions(-) > The handling is an improvement. Thanks. Reviewed-by: Zi Yan <[email protected]> -- Best Regards, Yan, Zi