[PATCH mm-unstable] mm/shmem: writeout free swap if swap_writeout() reactivates fix

From: Hugh Dickins
Date: Fri Jul 18 2025 - 20:57:05 EST


Per Baolin: use shmem_recalc_inode() rather than open coding.

Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx>
---
mm/shmem.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/mm/shmem.c b/mm/shmem.c
index 5a7ce4c8bad6..927ccc4a6002 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1692,9 +1692,7 @@ int shmem_writeout(struct folio *folio, struct swap_iocb **plug,
__GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN);
/* Swap entry might be erased by racing shmem_free_swap() */
if (!error) {
- spin_lock(&info->lock);
- info->swapped -= nr_pages;
- spin_unlock(&info->lock);
+ shmem_recalc_inode(inode, 0, -nr_pages);
swap_free_nr(folio->swap, nr_pages);
}

--
2.43.0