From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161212AbcFPAaE (ORCPT ); Wed, 15 Jun 2016 20:30:04 -0400 Received: from mail.kernel.org ([198.145.29.136]:50504 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932671AbcFPA2x (ORCPT ); Wed, 15 Jun 2016 20:28:53 -0400 From: Andy Lutomirski To: "linux-kernel@vger.kernel.org" , x86@kernel.org, Borislav Petkov Cc: Nadav Amit , Kees Cook , Brian Gerst , "kernel-hardening@lists.openwall.com" , Linus Torvalds , Josh Poimboeuf , Andy Lutomirski Subject: [PATCH 07/13] x86/die: Don't try to recover from an OOPS on a non-default stack Date: Wed, 15 Jun 2016 17:28:29 -0700 Message-Id: <73fa53f32b34bd672d0f0e8f596f7982c71090d2.1466036668.git.luto@kernel.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's not going to work, because the scheduler will explode if we try to schedule when running on an IST stack or similar. This will matter when we let kernel stack overflows (which are #DF) call die(). Signed-off-by: Andy Lutomirski --- arch/x86/kernel/dumpstack.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index 2bb25c3fe2e8..36effb39c9c9 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c @@ -247,6 +247,9 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr) return; if (in_interrupt()) panic("Fatal exception in interrupt"); + if (((current_stack_pointer() ^ (current_top_of_stack() - 1)) + & ~(THREAD_SIZE - 1)) != 0) + panic("Fatal exception on special stack"); if (panic_on_oops) panic("Fatal exception"); do_exit(signr); -- 2.7.4