v4
2026-08-07
全配置启用 per-VMA 锁并清理 · v4
使 per-VMA 锁普遍可用,binder/tcp 删除 mmap_lock 回退,并新增等待写者的 RCU VMA 查找辅助。
原始补丁链接
子 Patch(5)
1/5
mm: Make per-VMA locks available universally
取消 ARCH_SUPPORTS_PER_VMA_LOCK 条件编译,使 per-VMA 锁在所有架构和 SMP=n 配置下可用;该 Kconfig 只是收益标记,删除后简化内核并便于通用代码使用。
2/5
binder: Make shrinker rely solely on per-VMA lock
[Re: [PATCH v4 2/5] binder: Make shrinker rely solely on per-VMA lock] On Thu, Aug 6, 2026 at 10:05 PM Suren Baghdasaryan surenb@google.com wrote: > > From: Dave Hansen dave.hansen@linux.intel.com
3/5
mm: Add RCU-based VMA lookup helper that waits for writers
新增 vma_start_read_unlocked():RCU 式 VMA 查找在获取 per-VMA 锁失败时临时取 mmap_read_lock 等待 writer 完成,避免回退路径的死锁问题。
4/5
binder: Remove mmap_lock fallback
binder page_range 改用 vma_start_read_unlocked() 等待 writer,不再因 per-VMA 锁获取失败而回退 mmap_lock,删除旧 fallback 代码。
5/5
tcp: Remove mmap_lock fallback path
TCP zero copy 改用 lock_vma_under_rcu_wait() 等待 writer,删除 mmap_lock fallback,同时省去 find_tcp_vma() 间传递锁状态。