> Date: Sun, 7 Feb 2021 15:42:27 +0000 > From: Miod Vallat <m...@online.fr> > > When asking for the backtrace of a secondary processor in ddb, if that > backtrace reaches the secondary cpu startup code before the > switch_trampoline call, it will trust uninitialized stack data and is > likely to panic with an unaligned access at db_stack_trace_print+0x1d0. > (this was found the hard way by landry@ many years ago due to another > bug which got quickly fixed) > > The following diff makes sure the secondary processor stack is correctly > set up to hint the backtrace code that it should not attempt to go > further.
Thanks; committed. > Index: locore.S > =================================================================== > RCS file: /OpenBSD/src/sys/arch/hppa/hppa/locore.S,v > retrieving revision 1.193 > diff -u -p -r1.193 locore.S > --- locore.S 23 Oct 2014 16:57:45 -0000 1.193 > +++ locore.S 2 Feb 2021 17:08:57 -0000 > @@ -2970,6 +2970,9 @@ ENTRY(hw_cpu_spinup_trampoline, 0) > stw r0, HPPA_FRAME_CRP(sp) > stw r0, HPPA_FRAME_PSP(sp) > > + ldil L%TFF_LAST, t1 > + stw t1, TF_FLAGS-TRAPFRAME_SIZEOF(sp) > + > /* Provide CPU with page tables. */ > ldil L%hppa_vtop, t1 > ldw R%hppa_vtop(t1), t1 > >