diff options
author | Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> | 2005-12-29 17:39:51 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-12-29 09:48:15 -0800 |
commit | 516949480d3700cbde4272228a102c84721d6007 (patch) | |
tree | b7fef00010e2ad97a9fdab4f683c1516948749cb /arch/mips/kernel/process.c | |
parent | 3603bc8dc5ab33941e6378fe52ea03b7f5561109 (diff) | |
download | op-kernel-dev-516949480d3700cbde4272228a102c84721d6007.zip op-kernel-dev-516949480d3700cbde4272228a102c84721d6007.tar.gz |
[PATCH] uml: fix random segfaults at bootup
Don't use printk() where "current_thread_info()" is crap.
Until when we switch to running on init_stack, current_thread_info() evaluates
to crap. Printk uses "current" at times (in detail, ¤t is evaluated with
CONFIG_DEBUG_SPINLOCK to check the spinlock owner task).
And this leads to random segmentation faults.
Exactly, what happens is that ¤t = *(current_thread_info()), i.e. round
down $esp and dereference the value. I.e. access the stack below $esp, which
causes SIGSEGV on a VM_GROWSDOWN vma (see arch/i386/mm/fault.c).
Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/mips/kernel/process.c')
0 files changed, 0 insertions, 0 deletions