diff options
author | Josh Poimboeuf <jpoimboe@redhat.com> | 2017-01-09 12:00:25 -0600 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-01-12 09:28:29 +0100 |
commit | ff3f7e2475bbf9201e95824e72698fcdc5c3d47a (patch) | |
tree | ec2c17fd61b6587c8d7ca8513867b3a3c00e8497 /ipc | |
parent | 2c96b2fe9c57b4267c3f0a680d82d7cc52e1c447 (diff) | |
download | linux-exynos-ff3f7e2475bbf9201e95824e72698fcdc5c3d47a.tar.gz linux-exynos-ff3f7e2475bbf9201e95824e72698fcdc5c3d47a.tar.bz2 linux-exynos-ff3f7e2475bbf9201e95824e72698fcdc5c3d47a.zip |
x86/entry: Fix the end of the stack for newly forked tasks
When unwinding a task, the end of the stack is always at the same offset
right below the saved pt_regs, regardless of which syscall was used to
enter the kernel. That convention allows the unwinder to verify that a
stack is sane.
However, newly forked tasks don't always follow that convention, as
reported by the following unwinder warning seen by Dave Jones:
WARNING: kernel stack frame pointer at ffffc90001443f30 in kworker/u8:8:30468 has bad value (null)
The warning was due to the following call chain:
(ftrace handler)
call_usermodehelper_exec_async+0x5/0x140
ret_from_fork+0x22/0x30
The problem is that ret_from_fork() doesn't create a stack frame before
calling other functions. Fix that by carefully using the frame pointer
macros.
In addition to conforming to the end of stack convention, this also
makes related stack traces more sensible by making it clear to the user
that ret_from_fork() was involved.
Reported-by: Dave Jones <davej@codemonkey.org.uk>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Andy Lutomirski <luto@amacapital.net>
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: Dmitry Vyukov <dvyukov@google.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Miroslav Benes <mbenes@suse.cz>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/8854cdaab980e9700a81e9ebf0d4238e4bbb68ef.1483978430.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'ipc')
0 files changed, 0 insertions, 0 deletions