Commit 2bee0177 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Petr Pavlu
Browse files

module: Use RCU in __is_module_percpu_address().



The modules list can be accessed under RCU assumption.

Use RCU protection instead preempt_disable().

Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20250108090457.512198-12-bigeasy@linutronix.de


Signed-off-by: default avatarPetr Pavlu <petr.pavlu@suse.com>
parent 2ff49f89
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -450,8 +450,7 @@ bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr)
	struct module *mod;
	unsigned int cpu;

	preempt_disable();

	guard(rcu)();
	list_for_each_entry_rcu(mod, &modules, list) {
		if (mod->state == MODULE_STATE_UNFORMED)
			continue;
@@ -468,13 +467,10 @@ bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr)
						per_cpu_ptr(mod->percpu,
							    get_boot_cpu_id());
				}
				preempt_enable();
				return true;
			}
		}
	}

	preempt_enable();
	return false;
}