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

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
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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;

	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)	{
		retval = hook->fn(regs, esr);
		if (retval == DBG_HOOK_HANDLED)
			break;
	}

	rcu_read_unlock();

	return retval;
}
NOKPROBE_SYMBOL(call_step_hook);
@@ -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;

	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) {
		unsigned int comment = esr & ESR_ELx_BRK64_ISS_COMMENT_MASK;

		if ((comment & ~hook->mask) == hook->imm)
			fn = hook->fn;
	}
	rcu_read_unlock();

	return fn ? fn(regs, esr) : DBG_HOOK_ERROR;
}