v3
2026-09-07
swap随机修复与清理 · v3
修复 swap 集群表分配空指针,后移 setup_swap_clusters_info 初始化并精简 swap_extend_table_try_free 调用。
原始补丁链接
子 Patch(4)
1/4
mm, swap: Fix potential NULL dereference when trying a sleep table allocation
修复 swap cluster 多表在非原子上下文 sleep 分配/释放导致的 NULL deref:分配失败线程可能置空 ci->table,扫描线程仍读表,需保证更新/释放与访问同步。
2/4
mm, swap: Move setup_swap_clusters_info() after SWP_SOLIDSTATE initialization
把 setup_swap_clusters_info() 移到 SWP_SOLIDSTATE 初始化之后,使 global_cluster 分配决策读到正确标志,避免非 SSD 设备启动时做无谓分配。
3/4
mm, swap: return early from swap_extend_table_try_free() on first non-zero entry
swap_extend_table_try_free() 改为遇到第一个非零 swap count 立即返回;只要有一项非零该 extend table 就不能释放,继续扫描无意义,节省遍历开销。
4/4
mm, swap: Remove unneeded swap_extend_table_try_free() in swap_dup_entries_cluster()
删除 swap_dup_entries_cluster() 中对 swap_extend_table_try_free() 的调用;现在 count 降回 MAX-1/MAX-2 时 __swap_cluster_put_entry() 已保证释放,额外调用不需要。