Commit 760d8ed0 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Will Deacon

arm64: Remove unneeded rcu_read_lock from debug handlers

Remove rcu_read_lock()/rcu_read_unlock() from debug exception
handlers since we are sure those are not preemptible and
interrupts are off.
Acked-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent ee07b93e
...@@ -207,16 +207,16 @@ static int call_step_hook(struct pt_regs *regs, unsigned int esr) ...@@ -207,16 +207,16 @@ static int call_step_hook(struct pt_regs *regs, unsigned int esr)
list = user_mode(regs) ? &user_step_hook : &kernel_step_hook; list = user_mode(regs) ? &user_step_hook : &kernel_step_hook;
rcu_read_lock(); /*
* Since single-step exception disables interrupt, this function is
* entirely not preemptible, and we can use rcu list safely here.
*/
list_for_each_entry_rcu(hook, list, node) { list_for_each_entry_rcu(hook, list, node) {
retval = hook->fn(regs, esr); retval = hook->fn(regs, esr);
if (retval == DBG_HOOK_HANDLED) if (retval == DBG_HOOK_HANDLED)
break; break;
} }
rcu_read_unlock();
return retval; return retval;
} }
NOKPROBE_SYMBOL(call_step_hook); NOKPROBE_SYMBOL(call_step_hook);
...@@ -305,14 +305,16 @@ static int call_break_hook(struct pt_regs *regs, unsigned int esr) ...@@ -305,14 +305,16 @@ static int call_break_hook(struct pt_regs *regs, unsigned int esr)
list = user_mode(regs) ? &user_break_hook : &kernel_break_hook; list = user_mode(regs) ? &user_break_hook : &kernel_break_hook;
rcu_read_lock(); /*
* Since brk exception disables interrupt, this function is
* entirely not preemptible, and we can use rcu list safely here.
*/
list_for_each_entry_rcu(hook, list, node) { list_for_each_entry_rcu(hook, list, node) {
unsigned int comment = esr & ESR_ELx_BRK64_ISS_COMMENT_MASK; unsigned int comment = esr & ESR_ELx_BRK64_ISS_COMMENT_MASK;
if ((comment & ~hook->mask) == hook->imm) if ((comment & ~hook->mask) == hook->imm)
fn = hook->fn; fn = hook->fn;
} }
rcu_read_unlock();
return fn ? fn(regs, esr) : DBG_HOOK_ERROR; return fn ? fn(regs, esr) : DBG_HOOK_ERROR;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment