Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753714AbbF3RBd (ORCPT ); Tue, 30 Jun 2015 13:01:33 -0400 Received: from mail.skyhub.de ([78.46.96.112]:38944 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751795AbbF3RB0 (ORCPT ); Tue, 30 Jun 2015 13:01:26 -0400 Date: Tue, 30 Jun 2015 19:01:04 +0200 From: Borislav Petkov To: Andy Lutomirski Cc: x86@kernel.org, linux-kernel@vger.kernel.org, =?utf-8?B?RnLDqWTDqXJpYw==?= Weisbecker , Rik van Riel , Oleg Nesterov , Denys Vlasenko , Kees Cook , Brian Gerst , paulmck@linux.vnet.ibm.com Subject: Re: [PATCH v4 07/17] x86/traps: Assert that we're in CONTEXT_KERNEL in exception entries Message-ID: <20150630170103.GF23297@pd.tnic> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2512 Lines: 67 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 > --- > 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. -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/