linux-stable-rt/arch/powerpc/kernel
Mathieu Desnoyers f144e7c727 [POWERPC] Fix atomicity of TIF update in flush_thread()
Fix atomicity of TIF update in flush_thread() for powerpc

Fixes it correctly with *_ti_thread_flag.

Race :

parent process executing :
sys_ptrace()
 (lock_kernel())
 (ptrace_get_task_struct(pid))
 arch_ptrace()
   ptrace_detach()
     ptrace_disable(child);
       clear_singlestep(child);
         clear_tsk_thread_flag(child, TIF_SINGLESTEP);
         (which clears the TIF_SINGLESTEP flag atomically from a different
          process)
 (put_task_struct(child))
 (unlock_kernel())

And at the same time, in the child process :
sys_execve()
 do_execve()
   search_binary_handler()
     load_elf_binary()
       flush_old_exec()
         flush_thread()
           doing a non-atomic thread flag update

Applies on 2.6.20.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-03-16 16:37:28 +11:00
..
vdso32
vdso64
Makefile
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] No DEEPNAP on 970MP 1.0 2007-03-08 04:09:32 +11:00
crash.c
crash_dump.c
dma_64.c
entry_32.S
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.c
idle_6xx.S
idle_power4.S
init_task.c
io.c
iomap.c
iommu.c
irq.c
kprobes.c
l2cr_6xx.S
legacy_serial.c
lparcfg.c
lparmap.c
machine_kexec.c
machine_kexec_32.c
machine_kexec_64.c
misc.S
misc_32.S
misc_64.S
module_32.c
module_64.c
nvram_64.c
of_device.c
of_platform.c
paca.c
pci_32.c
pci_64.c
pci_dn.c
pmc.c
ppc32.h
ppc_ksyms.c
proc_ppc64.c
process.c [POWERPC] Fix atomicity of TIF update in flush_thread() 2007-03-16 16:37:28 +11:00
prom.c
prom_init.c
prom_parse.c [POWERPC] Fix warning in prom_parse.c of_irq_map_oldworld() 2007-03-08 04:09:33 +11:00
ptrace-common.h
ptrace.c
ptrace32.c
rtas-proc.c
rtas-rtc.c
rtas.c
rtas_flash.c
rtas_pci.c
semaphore.c
setup-common.c
setup.h
setup_32.c
setup_64.c
signal_32.c
signal_64.c
smp-tbsync.c
smp.c
swsusp_32.S
sys_ppc32.c
syscalls.c
sysfs.c
systbl.S
tau_6xx.c
time.c
traps.c
udbg.c
udbg_16550.c [PATCH] constant should be long 2007-03-14 15:27:50 -07:00
vdso.c
vecemu.c
vector.S
vio.c
vmlinux.lds.S