android_kernel_xiaomi_sm7250/arch/i386/kernel
Ingo Molnar b88d4f1d39 [PATCH] i386: break out of recursion in stackframe walk
If CONFIG_FRAME_POINTERS is enabled, and one does a dump_stack() during
early SMP init, an infinite stackdump and a bootup hang happens:

 [<c0104e7f>] show_trace+0xd/0xf
 [<c0104e96>] dump_stack+0x15/0x17
 [<c01440df>] save_trace+0xc3/0xce
 [<c014527d>] mark_lock+0x8c/0x4fe
 [<c0145df5>] __lockdep_acquire+0x44e/0xaa5
 [<c0146798>] lockdep_acquire+0x68/0x84
 [<c1048699>] _spin_lock+0x21/0x2f
 [<c010d918>] prepare_set+0xd/0x5d
 [<c010daa8>] generic_set_all+0x1d/0x201
 [<c010ca9a>] mtrr_ap_init+0x23/0x3b
 [<c010ada8>] identify_cpu+0x2a7/0x2af
 [<c01192a7>] smp_store_cpu_info+0x2f/0xb4
 [<c01197d0>] start_secondary+0xb5/0x3ec
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [<c104ec11>] end_of_stack_stop_unwind_function+0x1/0x4
 [...]

Due to "end_of_stack_stop_unwind_function" recursing back to itself in the
EBP stackframe-walker.  So avoid this type of recursion when walking the
stack .

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-23 07:42:56 -07:00
..
acpi [PATCH] PCI: fix memory leak in MMCONFIG error path 2006-06-21 12:00:01 -07:00
cpu [PATCH] Don't trigger full rebuild via CONFIG_MTRR 2006-06-23 07:42:56 -07:00
timers [PATCH] timer TSC check suspend notifier change 2006-05-01 18:17:47 -07:00
.gitignore [PATCH] x86: gitignore some autogenerated files for i386 2006-02-14 16:09:35 -08:00
alternative.c [PATCH] x86: SMP alternatives 2006-03-23 07:38:04 -08:00
apic.c [PATCH] arch/i386/kernel/apic.c: make modern_apic() static 2006-06-23 07:42:56 -07:00
apm.c [PATCH] i386 apm.c optimization 2006-06-23 07:42:56 -07:00
asm-offsets.c
bootflag.c
cpuid.c [PATCH] x86 cpuid and msr notifier callback section mismatches 2006-04-19 09:13:50 -07:00
crash_dump.c
crash.c kexec: grammar fix for crash_save_this_cpu() 2006-04-01 01:39:17 +02:00
doublefault.c
early_printk.c
efi_stub.S
efi.c [PATCH] fix array overrun in efi.c 2006-03-26 08:56:57 -08:00
entry.S [PATCH] i386: fix singlestep through an int80 syscall 2006-03-23 07:38:05 -08:00
head.S [PATCH] i386: cleanup after cpu_gdt_descr conversion to per-cpu data 2006-03-23 07:38:06 -08:00
i386_ksyms.c [PATCH] No arch-specific strpbrk implementations 2006-04-11 06:18:40 -07:00
i387.c
i8237.c
i8259.c
init_task.c
io_apic.c [PATCH] x86_64: avoid IRQ0 ioapic pin collision 2006-05-08 09:34:56 -07:00
ioport.c
irq.c
kprobes.c [PATCH] kprobe: fix resume execution on i386 2006-04-28 08:33:47 -07:00
ldt.c
machine_kexec.c [PATCH] fix kexec asm 2006-03-08 14:15:04 -08:00
Makefile [PATCH] DMI: move dmi_scan.c from arch/i386 to drivers/firmware/ 2006-04-14 11:41:25 -07:00
mca.c
microcode.c [PATCH] fix x86 microcode driver handling of multiple matching revisions 2006-06-23 07:42:56 -07:00
module.c [PATCH] x86: SMP alternatives 2006-03-23 07:38:04 -08:00
mpparse.c [PATCH] x86_64: avoid IRQ0 ioapic pin collision 2006-05-08 09:34:56 -07:00
msr.c [PATCH] x86 cpuid and msr notifier callback section mismatches 2006-04-19 09:13:50 -07:00
nmi.c [PATCH] fix signed vs unsigned in nmi watchdog 2006-03-28 09:16:08 -08:00
numaq.c
pci-dma.c
process.c [PATCH] unexport get_wchan 2006-03-31 12:19:01 -08:00
ptrace.c [PATCH] drop task argument of audit_syscall_{entry,exit} 2006-05-01 06:06:18 -04:00
quirks.c [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
reboot_fixups.c [PATCH] i386: Remove printk about reboot fixups at reboot 2006-04-09 11:53:53 -07:00
reboot.c
relocate_kernel.S
scx200.c
semaphore.c [PATCH] x86: SMP alternatives 2006-03-23 07:38:04 -08:00
setup.c [PATCH] Fix HPET operation on 32-bit NVIDIA platforms 2006-06-08 15:12:21 -07:00
sigframe.h
signal.c [PATCH] swsusp: finally solve mysqld problem 2006-03-23 07:38:08 -08:00
smp.c [PATCH] on_each_cpu(): disable local interrupts 2006-03-22 07:53:59 -08:00
smpboot.c [PATCH] Avoid printing pointless tsc skew msgs 2006-04-28 08:33:47 -07:00
srat.c [PATCH] Unify pxm_to_node() and node_to_pxm() 2006-06-23 07:42:48 -07:00
summit.c
sys_i386.c [PATCH] Uninline sys_mmap common code (reduce binary size) 2006-03-22 07:54:02 -08:00
syscall_table.S [PATCH] sys_move_pages: 32bit support (i386, x86_64) 2006-06-23 07:42:53 -07:00
sysenter.c
time_hpet.c
time.c [PATCH] x86: fix potential jiffies overflow in timer_resume() 2006-03-06 18:40:44 -08:00
topology.c [PATCH] x86 topology: don;t create a control file for BSP that cannot be removed 2006-03-23 07:38:07 -08:00
trampoline.S
traps.c [PATCH] i386: break out of recursion in stackframe walk 2006-06-23 07:42:56 -07:00
vm86.c [PATCH] drop task argument of audit_syscall_{entry,exit} 2006-05-01 06:06:18 -04:00
vmlinux.lds.S Merge master.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild 2006-03-25 08:48:48 -08:00
vsyscall-int80.S
vsyscall-note.S
vsyscall-sigreturn.S [PATCH] Mark unwind info for signal trampolines in vDSOs 2006-03-31 12:18:52 -08:00
vsyscall-sysenter.S [PATCH] i386: more vsyscall documentation 2006-03-23 07:38:06 -08:00
vsyscall.lds.S
vsyscall.S