Messages in this thread | | | Date | Tue, 30 Jun 2015 19:01:04 +0200 | From | Borislav Petkov <> | Subject | Re: [PATCH v4 07/17] x86/traps: Assert that we're in CONTEXT_KERNEL in exception entries |
| |
On Mon, Jun 29, 2015 at 12:33:39PM -0700, Andy Lutomirski wrote: > Other than the super-atomic exception entries, all exception entries > are supposed to switch our context tracking state to CONTEXT_KERNEL. > Assert that they do. These assertions appear trivial at this point, > as exception_enter is the function responsible for switching > context, but I'm planning on reworking x86's exception context > tracking, and these assertions will help make sure that all of this > code keeps working. > > Signed-off-by: Andy Lutomirski <luto@kernel.org> > --- > arch/x86/kernel/traps.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c > index f5791927aa64..2a783c4fe0e9 100644 > --- a/arch/x86/kernel/traps.c > +++ b/arch/x86/kernel/traps.c > @@ -292,6 +292,8 @@ static void do_error_trap(struct pt_regs *regs, long error_code, char *str, > enum ctx_state prev_state = exception_enter(); > siginfo_t info; > > + CT_WARN_ON(ct_state() != CONTEXT_KERNEL); > + > if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) != > NOTIFY_STOP) { > conditional_sti(regs); > @@ -376,6 +378,7 @@ dotraplinkage void do_bounds(struct pt_regs *regs, long error_code) > siginfo_t *info; > > prev_state = exception_enter(); > + CT_WARN_ON(ct_state() != CONTEXT_KERNEL); > if (notify_die(DIE_TRAP, "bounds", regs, error_code, > X86_TRAP_BR, SIGSEGV) == NOTIFY_STOP) > goto exit; > @@ -457,6 +460,7 @@ do_general_protection(struct pt_regs *regs, long error_code) > enum ctx_state prev_state; > > prev_state = exception_enter(); > + CT_WARN_ON(ct_state() != CONTEXT_KERNEL); > conditional_sti(regs); > > if (v8086_mode(regs)) { > @@ -514,6 +518,7 @@ dotraplinkage void notrace do_int3(struct pt_regs *regs, long error_code) > return; > > prev_state = ist_enter(regs); > + CT_WARN_ON(ct_state() != CONTEXT_KERNEL);
Yeah, so any chance those assertions can be moved at the end of both ist_enter() and exception_enter()?
Yeah, I read above that you're planning to rework it but it is cleaner to have them at the end of the _enter() functions instead in all those trap handlers, no...?
-- Regards/Gruss, Boris.
ECO tip #101: Trim your mails when you reply. --
| |