[PATCH v4] mm/rmap: synchronize lock and unlock target in anon_vma_clone
From: Eric Kim
Date: Mon Aug 17 2026 - 01:25:43 EST
Currently, in anon_vma_clone(), active_anon_vma is assigned from
src->anon_vma and is used when unlocking anon_vma after linking
new AVCs. However, the corresponding lock operation uses
src->anon_vma directly.
Although they are actually the same thing, use active_anon_vma
consistently to make the lock/unlock pair explicit.
Signed-off-by: Eric Kim <seohyun.kim@xxxxxxxxxx>
Reviewed-by: Lorenzo Stoakes (ARM) <ljs@xxxxxxxxxx>
Reviewed-by: Lance Yang <lance.yang@xxxxxxxxx>
Reviewed-by: Rik van Riel <riel@xxxxxxxxxxx>
Reviewed-by: Barry Song <baohua@xxxxxxxxxx>
---
v2:
- Clarify the commit message to explain that src->anon_vma and
active_anon_vma refer to the same anon_vma.
v3:
- Carry over review tags from v2.
v4:
- Clarify ctive_anon_vma and src->anon_vma refer to the same
anon_vma.
mm/rmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/rmap.c b/mm/rmap.c
index 1c77d5dc06e9..f3fadfb69c7f 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -350,7 +350,7 @@ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src,
* Now link the anon_vma's back to the newly inserted AVCs.
* Note that all anon_vma's share the same root.
*/
- anon_vma_lock_write(src->anon_vma);
+ anon_vma_lock_write(active_anon_vma);
list_for_each_entry_reverse(avc, &dst->anon_vma_chain, same_vma) {
struct anon_vma *anon_vma = avc->anon_vma;
--
2.55.0