mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
static_call: Use RCU in all users of __module_text_address().
__module_text_address() can be invoked within a RCU section, there is no requirement to have preemption disabled. Replace the preempt_disable() section around __module_text_address() with RCU. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20250108090457.512198-28-bigeasy@linutronix.de Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
This commit is contained in:
parent
7e74a7c00a
commit
3983da398c
|
|
@ -325,13 +325,12 @@ static int __static_call_mod_text_reserved(void *start, void *end)
|
|||
struct module *mod;
|
||||
int ret;
|
||||
|
||||
preempt_disable();
|
||||
mod = __module_text_address((unsigned long)start);
|
||||
WARN_ON_ONCE(__module_text_address((unsigned long)end) != mod);
|
||||
if (!try_module_get(mod))
|
||||
mod = NULL;
|
||||
preempt_enable();
|
||||
|
||||
scoped_guard(rcu) {
|
||||
mod = __module_text_address((unsigned long)start);
|
||||
WARN_ON_ONCE(__module_text_address((unsigned long)end) != mod);
|
||||
if (!try_module_get(mod))
|
||||
mod = NULL;
|
||||
}
|
||||
if (!mod)
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user