kernel-ark/arch/powerpc/kernel
Paul Mackerras ae62fbb5f1 [POWERPC] Fix subtle FP state corruption bug in signal return on SMP
This fixes a bug which can cause corruption of the floating-point state
on return from a signal handler.  If we have a signal handler that has
used the floating-point registers, and it happens to context-switch to
another task while copying the interrupted floating-point state from the
user stack into the thread struct (e.g. because of a page fault, or
because it gets preempted), the context switch code will think that the
FP registers contain valid FP state that needs to be copied into the
thread_struct, and will thus overwrite the values that the signal return
code has put into the thread_struct.

This can occur because we clear the MSR bits that indicate the presence
of valid FP state after copying the state into the thread_struct.  To fix
this we just move the clearing of the MSR bits to before the copy.  A
similar potential problem also occurs with the Altivec state, and this
fixes that in the same way.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-06-26 14:49:11 +10:00
..
vdso32 [POWERPC] Fix VDSO gettimeofday() when called with NULL struct timeval 2007-06-26 14:41:19 +10:00
vdso64 [POWERPC] Fix VDSO gettimeofday() when called with NULL struct timeval 2007-06-26 14:41:19 +10:00
align.c
asm-offsets.c
audit.c
binfmt_elf32.c
btext.c
compat_audit.c
cpu_setup_6xx.S
cpu_setup_pa6t.S
cpu_setup_ppc970.S
cputable.c [POWERPC] Add missing pmc_type fields in cpu_table 2007-05-22 20:20:56 +10:00
crash_dump.c
crash.c
dma_64.c
entry_32.S [POWERPC] Fix COMMON symbol warnings 2007-05-17 21:10:15 +10:00
entry_64.S
firmware.c
fpu.S
head_4xx.S
head_8xx.S
head_32.S
head_44x.S
head_64.S
head_booke.h
head_fsl_booke.S
ibmebus.c
idle_6xx.S
idle_power4.S
idle.c
init_task.c
io.c
iomap.c
iommu.c
irq.c [POWERPC] Compare irq numbers with NO_IRQ not IRQ_NONE 2007-06-02 21:01:56 +10:00
kprobes.c
l2cr_6xx.S
legacy_serial.c
lparcfg.c
lparmap.c
machine_kexec_32.c
machine_kexec_64.c
machine_kexec.c
Makefile
misc_32.S
misc_64.S
misc.S
module_32.c
module_64.c
msi.c
nvram_64.c
of_device.c
of_platform.c [POWERPC] Fix pci_setup_phb_io_dynamic for pci_iomap 2007-06-07 11:44:40 +10:00
paca.c
pci_32.c
pci_64.c [POWERPC] Fix IO space on PCI buses created from of_platform 2007-05-17 21:11:14 +10:00
pci_dn.c
pmc.c [POWERPC] Fix typo: MMCR0_PMA0 != MMCR0_PMAO 2007-05-22 20:20:56 +10:00
ppc32.h
ppc_ksyms.c
proc_ppc64.c
process.c
prom_init.c
prom_parse.c
prom.c [POWERPC] Update documentation for of_find_node_by_type() 2007-06-02 21:01:55 +10:00
ptrace32.c
ptrace-common.h
ptrace.c [POWERPC] Fix ppc32 single-stepping out of syscalls 2007-06-02 21:01:55 +10:00
rtas_flash.c
rtas_pci.c
rtas-proc.c [POWERPC] Fix ppc_rtas_progress_show() 2007-05-17 21:11:15 +10:00
rtas-rtc.c
rtas.c
semaphore.c
setup_32.c
setup_64.c
setup-common.c [POWERPC] Check cache coherency of kernel vs firmware 2007-05-12 11:32:50 +10:00
setup.h
signal_32.c
signal_64.c [POWERPC] Fix subtle FP state corruption bug in signal return on SMP 2007-06-26 14:49:11 +10:00
smp-tbsync.c
smp.c [POWERPC] Fix smp_call_function to be preempt-safe 2007-05-22 20:20:56 +10:00
suspend.c
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp.c
sys_ppc32.c
syscalls.c
sysfs.c
systbl.S
tau_6xx.c
time.c
traps.c
udbg_16550.c
udbg.c [POWERPC] Fix console output getting dropped on platforms without udbg_putc 2007-06-14 11:56:17 +10:00
vdso.c
vecemu.c
vector.S
vio.c
vmlinux.lds.S [POWERPC] Fix powerpc vmlinux.lds.S 2007-05-22 20:20:56 +10:00