x86/boot/64: Put a real return address on the idle task stack
authorJosh Poimboeuf <jpoimboe@redhat.com>
Wed, 21 Sep 2016 21:04:05 +0000 (16:04 -0500)
committerIngo Molnar <mingo@kernel.org>
Thu, 20 Oct 2016 07:15:23 +0000 (09:15 +0200)
commit595c1e645d9fd8561104b5680931f68a429aaa1c
treeee693de30058153bcfcdfbf0ec50dc31f6edce47
parenta9468df5ad48d06e5237fc2b56fb04c52f79c8c4
x86/boot/64: Put a real return address on the idle task stack

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

Make it a real address by using the side effect of a call instruction to
push the instruction pointer on the stack.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Reviewed-by: 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/f59593ae7b15d5126f872b0a23143173d28aa32d.1474480779.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/head_64.S