linux/arch/i386/kernel
Fernando Vazquez dc2bc768a0 [PATCH] stack overflow safe kdump: safe_smp_processor_id()
This is a the first of a series of patch-sets aiming at making kdump more
robust against stack overflows.

This patch set does the following:

* Add safe_smp_processor_id function to i386 architecture (this function was
  inspired by the x86_64 function of the same name).

* Substitute "smp_processor_id" with the stack overflow-safe
  "safe_smp_processor_id" in the reboot path to the second kernel.

This patch:

On the event of a stack overflow critical data that usually resides at the
bottom of the stack is likely to be stomped and, consequently, its use should
be avoided.

In particular, in the i386 and IA64 architectures the macro smp_processor_id
ultimately makes use of the "cpu" member of struct thread_info which resides
at the bottom of the stack.  x86_64, on the other hand, is not affected by
this problem because it benefits from the use of the PDA infrastructure.

To circumvent this problem I suggest implementing "safe_smp_processor_id()"
(it already exists in x86_64) for i386 and IA64 and use it as a replacement
for smp_processor_id in the reboot path to the dump capture kernel.  This is a
possible implementation for i386.

Signed-off-by: Fernando Vazquez <fernando@intellilink.co.jp>
Looks-reasonable-to: Andi Kleen <ak@muc.de>
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Vivek Goyal <vgoyal@in.ibm.com>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-01 00:39:30 -07:00
..
acpi [PATCH] x86: Allow disabling early pci scans with pci=noearly or disallowing conf1 2006-09-26 10:52:41 +02:00
cpu Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-09-26 13:07:55 -07:00
.gitignore [PATCH] x86: gitignore some autogenerated files for i386 2006-02-14 16:09:35 -08:00
alternative.c [PATCH] lockdep: x86 smp alternatives workaround 2006-07-03 15:27:04 -07:00
apic.c [PATCH] i386: Make enable_local_apic static 2006-09-26 10:52:35 +02:00
apm.c [PATCH] kthread: convert arch/i386/kernel/apm.c 2006-09-29 09:18:12 -07:00
asm-offsets.c [PATCH] vdso: randomize the i386 vDSO by moving it into a vma 2006-06-27 17:32:38 -07:00
bootflag.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cpuid.c [PATCH] Fix modular cpuid.ko 2006-07-03 21:25:20 -07:00
crash_dump.c [PATCH] kdump: read previous kernel's memory 2006-01-10 08:01:28 -08:00
crash.c [PATCH] i386: Kdump i386 nmi event notification fix 2006-09-26 10:52:27 +02:00
doublefault.c [PATCH] i386: cpu_relax() in crash.c and doublefault.c 2006-06-25 10:00:55 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S [PATCH] x86: remove unused include from efi_stub.S 2006-09-26 08:48:56 -07:00
efi.c [PATCH] efi: add lock annotations for efi_call_phys_prelog and efi_call_phys_epilog 2006-09-29 09:18:07 -07:00
entry.S [PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder 2006-09-26 10:52:41 +02:00
head.S [PATCH] i386: Do better early exception handlers 2006-09-26 10:52:39 +02:00
hpet.c [PATCH] Fix faulty HPET clocksource usage (fix for bug #7062) 2006-09-01 11:39:08 -07:00
i386_ksyms.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
i387.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
i8237.c [PATCH] mmc (mainly): add "or later" clause to licence statement. 2006-10-01 00:39:23 -07:00
i8253.c [PATCH] time: fix time going backward w/ clock=pit 2006-06-26 09:58:21 -07:00
i8259.c [PATCH] x86: - restore i8259A eoi status on resume 2006-09-26 10:52:41 +02:00
init_task.c [PATCH] Change maxaligned_in_smp alignemnt macros to internodealigned_in_smp macros 2006-01-08 20:13:38 -08:00
io_apic.c [PATCH] i386: Replace i386 open-coded cmdline parsing with 2006-09-26 10:52:32 +02:00
ioport.c [PATCH] i386: use thread_info flags for debug regs and IO bitmaps 2006-07-09 18:47:12 -07:00
irq.c [PATCH] i386: Fix stack switching in do_IRQ 2006-08-30 16:05:16 -07:00
kprobes.c [PATCH] kprobe-booster: disable in preemptible kernel 2006-07-31 13:28:38 -07:00
ldt.c [PATCH] arch/i386/kernel/ldt.c should #include <asm/mmu_context.h> 2005-11-07 07:53:29 -08:00
machine_kexec.c [PATCH] i386: Avoid overwriting the current pgd (V4, i386) 2006-09-26 10:52:38 +02:00
Makefile [PATCH] i386: Do stacktracer conversion too 2006-09-26 10:52:34 +02:00
mca.c [PATCH] i386: Disallow kprobes on NMI handlers 2006-09-26 10:52:36 +02:00
microcode.c [PATCH] x86 microcode: don't check the size 2006-09-27 08:26:18 -07:00
module.c [PATCH] x86: SMP alternatives 2006-03-23 07:38:04 -08:00
mpparse.c [PATCH] i386: Support physical cpu hotplug for x86_64 2006-09-26 10:52:35 +02:00
msr.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-06-30 15:39:30 -07:00
nmi.c [PATCH] x86: Clean up x86 NMI sysctls 2006-09-30 01:47:55 +02:00
numaq.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
pci-dma.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
process.c [PATCH] kmemdup: some users 2006-10-01 00:39:19 -07:00
ptrace.c [PATCH] i386/x86-64: rename is_at_popf(), add iret to tests and fix 2006-09-26 10:52:33 +02:00
quirks.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
reboot_fixups.c [PATCH] i386: Remove printk about reboot fixups at reboot 2006-04-09 11:53:53 -07:00
reboot.c [PATCH] x86: remove locally-defined ldt structure in favour of standard type 2006-09-26 08:48:55 -07:00
relocate_kernel.S [PATCH] i386: Avoid overwriting the current pgd (V4, i386) 2006-09-26 10:52:38 +02:00
scx200.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
setup.c [PATCH] i386: replace intermediate array-size definitions with ARRAY_SIZE() 2006-09-30 01:47:55 +02:00
sigframe.h [PATCH] __user annotations for pointers in i386 sigframe 2005-09-09 10:31:59 -07:00
signal.c [PATCH] vdso: randomize the i386 vDSO by moving it into a vma 2006-06-27 17:32:38 -07:00
smp.c [PATCH] stack overflow safe kdump: safe_smp_processor_id() 2006-10-01 00:39:30 -07:00
smpboot.c [PATCH] completions: lockdep annotate on stack completions 2006-10-01 00:39:24 -07:00
srat.c [PATCH] convert i386 Summit subarch to use SRAT info for apicid_to_node calls 2006-09-29 09:18:03 -07:00
summit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_i386.c [PATCH] Uninline sys_mmap common code (reduce binary size) 2006-03-22 07:54:02 -08:00
syscall_table.S [PATCH] x86: Add portable getcpu call 2006-09-26 10:52:28 +02:00
sysenter.c [PATCH] small fix for not releasing the mmap semaphore in i386/arch_setup_additional_pages 2006-06-28 12:05:50 -07:00
time_hpet.c [PATCH] hpet rtc emulation: add watchdog timer 2006-09-26 08:48:54 -07:00
time.c [PATCH] kill wall_jiffies 2006-10-01 00:39:27 -07:00
topology.c [PATCH] i386: clean up topology.c 2006-09-26 10:52:35 +02:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] x86: Clean up x86 NMI sysctls 2006-09-30 01:47:55 +02:00
tsc.c [PATCH] i386: mark two more functions as __init 2006-09-26 10:52:35 +02:00
vm86.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
vmlinux.lds.S [PATCH] x86: put .note.* sections into a PT_NOTE segment in vmlinux 2006-09-26 08:48:55 -07:00
vsyscall-int80.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-note.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall-sigreturn.S [PATCH] Mark unwind info for signal trampolines in vDSOs 2006-03-31 12:18:52 -08:00
vsyscall-sysenter.S [PATCH] vdso: randomize the i386 vDSO by moving it into a vma 2006-06-27 17:32:38 -07:00
vsyscall.lds.S [PATCH] vDSO hash-style fix 2006-07-31 13:28:43 -07:00
vsyscall.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00