Skip to contentSkip to conversation

mm/damon/vaddr: protect vma traversal in __damon_va_thre_regions() with rcu read lock

PATCH Applied SeongJae Park 1 participant 1 message Sep 5, 2024

Subsystems (2)
lore
Share & tools
lore

SeongJae Park

author maintainer
#0 lore raw

PATCH 1/1 mm/damon/vaddr: protect vma traversal in __damon_va_thre_regions() with rcu read lock

From: "Liam R. Howlett" <[email protected]>

Traversing VMAs of a given maple tree should be protected by rcu read lock. However, __damon_va_three_regions() is not doing the protection. Hold the lock.

Fixes d0cf3dd47f0d ("damon: convert __damon_va_three_regions to use the VMA iterator")
---
 mm/damon/vaddr.c | 2 ++
 1 file changed, 2 insertions(+)
mm/damon/vaddr.c +2 -0
index b0e8b361891d..08cfd22b5249 100644
@@ -126,6 +126,7 @@ static int __damon_va_three_regions(struct mm_struct *mm,
 	 * If this is too slow, it can be optimised to examine the maple
 	 * tree gaps.
 	 */
+	rcu_read_lock();
 	for_each_vma(vmi, vma) {
 		unsigned long gap;
 
@@ -146,6 +147,7 @@ static int __damon_va_three_regions(struct mm_struct *mm,
 next:
 		prev = vma;
 	}
+	rcu_read_unlock();
 
 	if (!sz_range(&second_gap) || !sz_range(&first_gap))
 		return -EINVAL;
Signature · 1 line
2.39.2