x86/boot/32: Fix the end of the stack for idle tasks
authorJosh Poimboeuf <jpoimboe@redhat.com>
Wed, 21 Sep 2016 21:04:02 +0000 (16:04 -0500)
committerIngo Molnar <mingo@kernel.org>
Thu, 20 Oct 2016 07:15:23 +0000 (09:15 +0200)
commit6616a147a79c6fc280572f5a993e9e5ebd200d24
tree01690120c4702201234db234155bcd07d2cd7fe5
parent4d516f41704055710da872b62ddc4b6d23248984
x86/boot/32: Fix the end of the stack for idle tasks

The frame at the end of each idle task stack is inconsistent with real
task stacks, which have a stack frame header and a real return address
before the pt_regs area.  This inconsistency can be confusing for stack
unwinders.  It also hides useful information about what asm code was
involved in calling into C.

Fix that by changing the initial code jumps to calls.  Also add infinite
loops after the calls to make it clear that the calls don't return, and
to hang if they do.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Nilay Vaish <nilayvaish@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/2588f34b6fbac4ae6f6f9ead2a78d7f8d58a6341.1474480779.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/head_32.S