Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1430348 > unrolled thread

[PATCH v4 10/16] x86/die: Don't try to recover from an OOPS on a non-default stack

Started byAndy Lutomirski <luto@kernel.org>
First post2016-06-24 06:30 +0200
Last post2016-06-24 06:30 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v4 10/16] x86/die: Don't try to recover from an OOPS on a non-default stack Andy Lutomirski <luto@kernel.org> - 2016-06-24 06:30 +0200

#1430348 — [PATCH v4 10/16] x86/die: Don't try to recover from an OOPS on a non-default stack

FromAndy Lutomirski <luto@kernel.org>
Date2016-06-24 06:30 +0200
Subject[PATCH v4 10/16] x86/die: Don't try to recover from an OOPS on a non-default stack
Message-ID<rNqUG-3pa-23@gated-at.bofh.it>
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 <luto@kernel.org>
---
 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 d6209f3a69cb..70d5aae8b8f7 100644
--- a/arch/x86/kernel/dumpstack.c
+++ b/arch/x86/kernel/dumpstack.c
@@ -245,6 +245,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.5.5

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web