Re: [PATCH v2 01/11] arm64: debug: clean up single_step_handler logic
From: Will Deacon <will@kernel.org>
Date: 2025-05-20 16:05:58
On Mon, May 12, 2025 at 06:43:16PM +0100, Ada Couprie Diaz wrote:
quoted hunk ↗ jump to hunk
Remove the unnecessary boolean which always checks if the handler was found and return early instead. Signed-off-by: Ada Couprie Diaz <redacted> --- arch/arm64/kernel/debug-monitors.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c index 58f047de3e1c..676fa0231935 100644 --- a/arch/arm64/kernel/debug-monitors.c +++ b/arch/arm64/kernel/debug-monitors.c@@ -241,8 +241,6 @@ static void send_user_sigtrap(int si_code) static int single_step_handler(unsigned long unused, unsigned long esr, struct pt_regs *regs) { - bool handler_found = false; - /* * If we are stepping a pending breakpoint, call the hw_breakpoint * handler first.@@ -250,10 +248,10 @@ static int single_step_handler(unsigned long unused, unsigned long esr, if (!reinstall_suspended_bps(regs)) return 0; - if (!handler_found && call_step_hook(regs, esr) == DBG_HOOK_HANDLED) - handler_found = true; + if (call_step_hook(regs, esr) == DBG_HOOK_HANDLED) + return 0; - if (!handler_found && user_mode(regs)) { + if (user_mode(regs)) { send_user_sigtrap(TRAP_TRACE); /*@@ -263,7 +261,7 @@ static int single_step_handler(unsigned long unused, unsigned long esr, * to the active-not-pending state). */ user_rewind_single_step(current); - } else if (!handler_found) { + } else {
Crikey, this code is totally bizarre! Thanks for cleaning it up. Will