rv: Fix read_lock scope in per-task DA cleanup

The da_monitor_reset_all() function for per-task monitors takes
tasklist_lock while iterating over tasks, then keeps it also while
iterating over idle tasks (one per CPU). The latter is not necessary
since the lock needs to guard only for_each_process_thread().

Use a scoped_guard for more compact syntax and adjust the scope only
where the lock is necessary.

Reviewed-by: Wen Yang <wen.yang@linux.dev>
Reviewed-by: Nam Cao <namcao@linutronix.de>
Link: https://lore.kernel.org/r/20260601153840.124372-13-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
This commit is contained in:
Gabriele Monaco
2026-06-01 17:38:39 +02:00
parent da245fae40
commit 3fc5d9bb09

View File

@@ -334,12 +334,12 @@ static void __da_monitor_reset_all(void (*reset)(struct da_monitor *))
struct task_struct *g, *p;
int cpu;
read_lock(&tasklist_lock);
for_each_process_thread(g, p)
reset(da_get_monitor(p));
scoped_guard(read_lock, &tasklist_lock) {
for_each_process_thread(g, p)
reset(da_get_monitor(p));
}
for_each_present_cpu(cpu)
reset(da_get_monitor(idle_task(cpu)));
read_unlock(&tasklist_lock);
}
static void da_monitor_reset_all(void)