[PATCH 3/4] mm, swap: return early from swap_extend_table_try_free() on first non-zero entry

From: Kemeng Shi

Date: Mon Jul 20 2026 - 03:15:41 EST


Return immediately when the first non-zero swap count is found as
any non-zero swap count prevents freeing extend_table and further
iteration is pointless.

Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx>
---
mm/swapfile.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/mm/swapfile.c b/mm/swapfile.c
index 81c4040912be..3fcbd10c6353 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1530,20 +1530,17 @@ int swap_retry_table_alloc(swp_entry_t entry, gfp_t gfp)
static void swap_extend_table_try_free(struct swap_cluster_info *ci)
{
unsigned long i;
- bool can_free = true;

if (!ci->extend_table)
return;

for (i = 0; i < SWAPFILE_CLUSTER; i++) {
if (ci->extend_table[i])
- can_free = false;
+ return;
}

- if (can_free) {
- kfree(ci->extend_table);
- ci->extend_table = NULL;
- }
+ kfree(ci->extend_table);
+ ci->extend_table = NULL;
}

/* Decrease the swap count of one slot, without freeing it */
--
2.36.1