linux/arch/i386/kernel
Jeremy Fitzhardinge 8701ea957d [PATCH] ptrace: Fix EFL_OFFSET value according to i386 pda changes
The PDA patches introduced a bug in ptrace: it reads eflags from the wrong
place on the target's stack, but writes it back to the correct place.  The
result is a corrupted eflags, which is most visible when it turns interrupts
off unexpectedly.

This patch fixes this by making the ptrace code a little less fragile.  It
changes [gs]et_stack_long to take a straightforward byte offset into struct
pt_regs, rather than requiring all callers to do a sizeof(struct pt_regs)
offset adjustment.  This means that the eflag's offset (EFL_OFFSET) on the
target stack can be simply computed with offsetof().

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Frederik Deweerdt <deweerdt@free.fr>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-22 08:55:51 -08:00
..
acpi Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
cpu [CPUFREQ] longhaul compile fix. 2006-12-17 19:09:59 -05:00
.gitignore
alternative.c [PATCH] paravirt: Patch inline replacements for paravirt intercepts 2006-12-07 02:14:08 +01:00
apic.c [PATCH] x86: Regard MSRs in lapic_suspend()/lapic_resume() 2006-12-07 02:14:11 +01:00
apm.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
asm-offsets.c [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
bootflag.c
cpuid.c [PATCH] i386: change uses of f_{dentry, vfsmnt} to use f_path 2006-12-08 08:28:42 -08:00
crash_dump.c
crash.c [PATCH] Kexec / Kdump: Unify elf note code 2006-12-07 08:39:46 -08:00
doublefault.c
e820.c [PATCH] compile error of register_memory() 2006-12-22 08:55:49 -08:00
early_printk.c
efi_stub.S
efi.c [PATCH] i386: call efi_get_time during suspend 2006-12-07 02:14:11 +01:00
entry.S Remove stack unwinder for now 2006-12-15 08:47:51 -08:00
head.S [PATCH] paravirt: Add startup infrastructure for paravirtualization 2006-12-07 02:14:08 +01:00
hpet.c [PATCH] i386: add missing iounmap in i386 hpet clocksource code 2006-12-07 02:14:02 +01:00
i386_ksyms.c
i387.c
i8237.c
i8253.c
i8259.c [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
init_task.c
io_apic.c [PATCH] i386: Fix io_apic.c warning 2006-12-09 21:33:36 +01:00
ioport.c
irq.c
kprobes.c [PATCH] kprobes: enable booster on the preemptible kernel 2006-12-07 08:39:38 -08:00
ldt.c [PATCH] i386: remove default_ldt, and simplify ldt-setting. 2006-12-07 02:14:01 +01:00
machine_kexec.c
Makefile [PATCH] paravirt: Add startup infrastructure for paravirtualization 2006-12-07 02:14:08 +01:00
mca.c [PATCH] i386: replace kmalloc+memset with kzalloc 2006-12-07 02:14:19 +01:00
microcode.c [PATCH] microcode: fix mc_cpu_notifier section warning 2006-12-22 08:55:50 -08:00
module.c [PATCH] Generic BUG for i386 2006-12-08 08:28:39 -08:00
mpparse.c [PATCH] x86-64: remove remaining pc98 code 2006-12-07 02:14:19 +01:00
msr.c [PATCH] i386: change uses of f_{dentry, vfsmnt} to use f_path 2006-12-08 08:28:42 -08:00
nmi.c [PATCH] x86: Fix boot hang due to nmi watchdog init code 2006-12-09 21:33:35 +01:00
numaq.c
paravirt.c [PATCH] paravirt: Add MMU virtualization to paravirt_ops 2006-12-07 02:14:08 +01:00
pci-dma.c [PATCH] i386: replace kmalloc+memset with kzalloc 2006-12-07 02:14:19 +01:00
process.c [PATCH] i386: remove IOPL check on task switch 2006-12-07 02:14:07 +01:00
ptrace.c [PATCH] ptrace: Fix EFL_OFFSET value according to i386 pda changes 2006-12-22 08:55:51 -08:00
quirks.c [PATCH] x86: Fix verify_quirk_intel_irqbalance() 2006-12-09 21:33:35 +01:00
reboot_fixups.c
reboot.c [PATCH] arch/i386/kernel/reboot.c should #include <linux/reboot.h> 2006-12-07 08:39:44 -08:00
relocate_kernel.S
scx200.c
setup.c [PATCH] compile error of register_memory() 2006-12-22 08:55:49 -08:00
sigframe.h
signal.c [PATCH] i386: Use %gs as the PDA base-segment in the kernel 2006-12-07 02:14:02 +01:00
smp.c Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
smpboot.c [PATCH] arch/i386/kernel/smpboot.c: remove unneeded ifdef 2006-12-13 09:05:46 -08:00
srat.c
summit.c
sys_i386.c
syscall_table.S
sysenter.c Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
time_hpet.c [PATCH] i386: Add iounmap in error paths in hpet code 2006-12-07 02:14:02 +01:00
time.c [PATCH] paravirt: header and stubs for paravirtualisation 2006-12-07 02:14:07 +01:00
topology.c [PATCH] i386: change the 'no_control' field to 'hotpluggable' in the struct cpu 2006-12-07 02:14:10 +01:00
trampoline.S
traps.c Remove stack unwinder for now 2006-12-15 08:47:51 -08:00
tsc.c Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2006-12-07 08:59:11 -08:00
vm86.c [PATCH] i386: Update sys_vm86 to cope with changed pt_regs and %gs usage 2006-12-07 02:14:03 +01:00
vmlinux.lds.S [PATCH] x86: Work around gcc 4.2 over aggressive optimizer 2006-12-09 21:33:36 +01:00
vsyscall-int80.S
vsyscall-note.S
vsyscall-sigreturn.S
vsyscall-sysenter.S
vsyscall.lds.S
vsyscall.S