linux/arch/ia64/kernel
Jim Keniston 8bf1101bd5 [PATCH] kprobes: Fix return probes on sys_execve
Fix a bug in kprobes that can cause an Oops or even a crash when a return
probe is installed on one of the following functions: sys_execve,
do_execve, load_*_binary, flush_old_exec, or flush_thread.  The fix is to
remove the call to kprobe_flush_task() in flush_thread().  This fix has
been tested on all architectures for which the return-probes feature has
been implemented (i386, x86_64, ppc64, ia64).  Please apply.

BACKGROUND

Up to now, we have called kprobe_flush_task() under two situations: when a
task exits, and when it execs.  Flushing kretprobe_instances on exit is
correct because (a) do_exit() doesn't return, and (b) one or more
return-probed functions may be active when a task calls do_exit().  Neither
is the case for sys_execve() and its callees.

Initially, the mistaken call to kprobe_flush_task() on exec was harmless
because we put the "real" return address of each active probed function
back in the stack, just to be safe, when we recycled its
kretprobe_instance.  When support for ppc64 and ia64 was added, this safety
measure couldn't be employed, and was eventually dropped even for i386 and
x86_64.  sys_execve() and its callees were informally blacklisted for
return probes until this fix was developed.

Acked-by: Prasanna S Panchamukhi <prasanna@in.ibm.com>
Signed-off-by: Jim Keniston <jkenisto@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-23 16:08:39 -08:00
..
cpufreq
Makefile
acpi-ext.c
acpi.c [IA64] move ACPI IOSAPIC locality domain mapping from pci.c to acpi.c 2005-09-19 15:57:48 -07:00
asm-offsets.c [IA64] fix circular dependency on generation of asm-offsets.h 2005-09-13 08:50:39 -07:00
brl_emu.c
cyclone.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
efi.c [IA64] Replace kcalloc(1, with kzalloc. 2005-11-10 11:28:20 -08:00
efi_stub.S
entry.S [IA64] Remove warnings for gcc 4.0 IA64 compilation. 2005-09-16 09:45:27 -07:00
entry.h
fsys.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
gate-data.S
gate.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
gate.lds.S
head.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
ia64_ksyms.c
init_task.c
iosapic.c
irq.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
irq_ia64.c
irq_lsapic.c
ivt.S [IA64] polish comments for tlb fault handler in ivt.S 2005-11-17 09:48:15 -08:00
jprobes.S
kprobes.c [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
machvec.c
mca.c [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
mca_asm.S [IA64] Wire in the MCA/INIT handler stacks 2005-09-22 13:24:19 -07:00
mca_drv.c Pull mca-check-psp into release branch 2005-11-10 10:38:05 -08:00
mca_drv.h [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
mca_drv_asm.S [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
minstate.h [IA64] MCA/INIT: remove the physical mode path from minstate.h 2005-09-11 14:09:12 -07:00
module.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
numa.c
pal.S
palinfo.c
patch.c [IA64] Fix 2.6 kernel for the new ia64 assembler 2005-10-25 15:05:45 -07:00
perfmon.c [PATCH] kfree cleanup: arch 2005-11-07 07:54:06 -08:00
perfmon_default_smpl.c
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
process.c [PATCH] kprobes: Fix return probes on sys_execve 2005-11-23 16:08:39 -08:00
ptrace.c [IA64] fix warning unused variable `g' 2005-10-28 15:52:13 -07:00
sal.c
salinfo.c [IA64] MCA/INIT: avoid reading INIT record during INIT event 2005-09-11 14:02:43 -07:00
semaphore.c
setup.c Pull context-bitmap into release branch 2005-11-10 10:39:49 -08:00
sigframe.h
signal.c [IA64] align signal-frame even when not using alternate signal-stack 2005-11-08 09:58:06 -08:00
smp.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
smpboot.c [PATCH] sched: disable preempt in idle tasks 2005-11-09 07:56:33 -08:00
sys_ia64.c
time.c [PATCH] jiffies_64 cleanup 2005-10-30 17:37:25 -08:00
topology.c
traps.c [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
unaligned.c
uncached.c
unwind.c [IA64] MCA/INIT: remove obsolete unwind code 2005-09-11 14:09:34 -07:00
unwind_decoder.c
unwind_i.h
vmlinux.lds.S