[PATCH v2 06/11] arm64: debug: split hardware breakpoint exeception entry
Mark Rutland
mark.rutland at arm.com
Wed May 28 08:17:37 PDT 2025
On Tue, May 20, 2025 at 04:36:39PM +0100, Will Deacon wrote:
> On Mon, May 12, 2025 at 06:43:21PM +0100, Ada Couprie Diaz wrote:
> > +static void noinstr el0_breakpt(struct pt_regs *regs, unsigned long esr)
> > +{
> > + if (!is_ttbr0_addr(regs->pc))
> > + arm64_apply_bp_hardening();
>
> I think this is a change in behaviour, as arm64_apply_bp_hardening() is
> now called before enter_from_user_mode() and debug_exception_enter().
> Is that safe and intentional?
Yes on both counts:
* It's safe. The arm64_apply_bp_hardening() helper, and the callbacks
that it may call are all noinstr, and are written to be safe to call
in this environment.
* It's intentional. The goal was to do this as soon as reasonably
possible, at least before unmasking exceptions, without incurring the
cost for exceptions where this didn't matter.
We've already executed a bunch of code to get here, and moving this
after enter_from_user_mode() should be fine.
This is inteneded to look the same as el0_ia() and el0_pc(), which both
call arm64_apply_bp_hardening() before enter_from_user_mode().
Mark.
More information about the linux-arm-kernel
mailing list