Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1465279
| Path | csiph.com!news.mixmin.net!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH v4 14/57] x86/head: put real return address on idle task stack |
| Date | Thu, 18 Aug 2016 15:20:02 +0200 |
| Message-ID | <s7voK-ho-29@gated-at.bofh.it> (permalink) |
| References | <s7vf3-dJ-11@gated-at.bofh.it> |
| X-Original-To | Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@kernel.org>, "H . Peter Anvin" <hpa@zytor.com> |
| X-Scanned-By | MIMEDefang 2.68 on 10.5.11.27 |
| X-Greylist | Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 18 Aug 2016 13:07:04 +0000 (UTC) |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 33 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | x86@kernel.org, linux-kernel@vger.kernel.org, Andy Lutomirski <luto@amacapital.net>, Linus Torvalds <torvalds@linux-foundation.org>, Steven Rostedt <rostedt@goodmis.org>, Brian Gerst <brgerst@gmail.com>, Kees Cook <keescook@chromium.org>, Peter Zijlstra <peterz@infradead.org>, Frederic Weisbecker <fweisbec@gmail.com>, Byungchul Park <byungchul.park@lge.com>, Nilay Vaish <nilayvaish@gmail.com> |
| X-Original-Date | Thu, 18 Aug 2016 08:05:54 -0500 |
| X-Original-Message-ID | <b5dea6c4f13b60df2c8a07cefb9787e1b0f9c621.1471525031.git.jpoimboe@redhat.com> |
| X-Original-References | <cover.1471525031.git.jpoimboe@redhat.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1465279 |
Show key headers only | View raw
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. Reviewed-by: Andy Lutomirski <luto@kernel.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> --- arch/x86/kernel/head_64.S | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 3621ad2..c90f481 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -298,8 +298,9 @@ ENTRY(start_cpu) * REX.W + FF /5 JMP m16:64 Jump far, absolute indirect, * address given in m16:64. */ - movq initial_code(%rip),%rax - pushq $0 # fake return address to stop unwinder + call 1f # put return address on stack for unwinder +1: xorq %rbp, %rbp # clear frame pointer + movq initial_code(%rip), %rax pushq $__KERNEL_CS # set correct cs pushq %rax # target address in negative space lretq -- 2.7.4
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH v4 14/57] x86/head: put real return address on idle task stack Josh Poimboeuf <jpoimboe@redhat.com> - 2016-08-18 15:20 +0200
csiph-web