linux_dsm_epyc7002/arch/i386/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
..
acpi [PATCH] Register disabled CPUs 2005-11-20 11:52:59 -08:00
cpu Merge x86-64 update from Andi 2005-11-14 19:56:02 -08:00
timers [PATCH] x86: fix cpu_khz with clock=pit 2005-11-13 18:14:13 -08:00
apic.c [PATCH] i386: LVT entries remaining unmasked on reboot 2005-11-07 07:53:28 -08:00
apm.c [PATCH] move pm_register/etc. to CONFIG_PM_LEGACY, pm_legacy.h 2005-11-13 18:14:10 -08:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bootflag.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpuid.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
crash.c [PATCH] drop "[PATCH] i386 kexec-on-panic: Don't shutdown the apics" 2005-11-15 08:59:18 -08:00
dmi_scan.c [PATCH] fix: dmi_check_system 2005-09-07 16:57:44 -07:00
doublefault.c [PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management 2005-09-05 00:06:11 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi.c [PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management 2005-09-05 00:06:11 -07:00
entry.S [PATCH] i386: NMI pointer comparison fix 2005-11-13 18:14:13 -08:00
head.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
i386_ksyms.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
i387.c x86: make restore_fpu() use alternative assembler instructions 2005-07-22 16:06:16 -04:00
i8237.c [PATCH] ISA DMA suspend for i386 2005-09-05 00:06:14 -07:00
i8259.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
ioport.c [PATCH] reset tss->io_bitmap_owner in sys_ioperm() 2005-11-05 16:31:36 -08:00
irq.c [PATCH] x86: hot plug CPU to support physical add of new processors 2005-10-30 17:37:12 -08:00
kprobes.c [PATCH] Kprobes: preempt_disable/enable() simplification 2005-11-07 07:53:46 -08: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] x86: more asm cleanups 2005-09-05 00:06:12 -07:00
Makefile Merge linux-2.6 with linux-acpi-2.6 2005-09-08 01:45:47 -04:00
mca.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
microcode.c [PATCH] i386: cleanup serialize msr 2005-09-05 00:06:11 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpparse.c [PATCH] i386: Use bigsmp for > 8 core Opteron systems 2005-11-20 11:52:59 -08:00
msr.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
nmi.c [PATCH] i386 nmi_watchdog: Merge check_nmi_watchdog fixes from x86_64 2005-10-30 17:37:13 -08:00
numaq.c [PATCH] re-disable TSC on NUMAQ 2005-07-28 21:46:05 -07:00
pci-dma.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
process.c [PATCH] kprobes: Fix return probes on sys_execve 2005-11-23 16:08:39 -08:00
ptrace.c [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
quirks.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reboot_fixups.c [PATCH] arch/i386/kernel/reboot_fixups.c should #include <linux/reboot_fixups.h> 2005-11-07 07:53:29 -08:00
reboot.c [PATCH] arch/i386: Replace custom macro with isdigit() 2005-09-13 08:22:33 -07:00
relocate_kernel.S [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
scx200.c [PATCH] arch/i386/kernel/scx200.c should #include <linux/scx200_gpio.h> 2005-11-07 07:53:29 -08:00
semaphore.c [PATCH] unify x86/x86-64 semaphore code 2005-09-05 00:06:14 -07:00
setup.c [PATCH] i386: EXPORT_SYMBOL(screen_info) even #ifndef CONFIG_VT 2005-11-09 07:56:36 -08:00
sigframe.h [PATCH] __user annotations for pointers in i386 sigframe 2005-09-09 10:31:59 -07:00
signal.c [PATCH] i386: fix stack alignment for signal handlers 2005-10-10 08:45:06 -07:00
smp.c [PATCH] useless includes of linux/irq.h in arch/i386 2005-09-26 18:29:50 -07:00
smpboot.c Merge x86-64 update from Andi 2005-11-14 19:56:02 -08:00
srat.c [PATCH] x86_64: Make i386 compile again with fourth DMA32 zone 2005-11-14 19:55:13 -08:00
summit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_i386.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscall_table.S [PATCH] remove sys_set_zone_reclaim() 2005-08-01 10:03:56 -07:00
sysenter.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
time_hpet.c [PATCH] hpet-RTC: cache the comparator register 2005-10-30 17:37:30 -08:00
time.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] x86: initialise tss->io_bitmap_owner to something 2005-10-30 17:37:11 -08:00
vm86.c [PATCH] mm: i386 sh sh64 ready for split ptlock 2005-10-29 21:40:41 -07:00
vmlinux.lds.S [PATCH] i386 / uml: add dwarf sections to static link script 2005-09-10 12:00:17 -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 kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
vsyscall-sysenter.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall.lds.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
vsyscall.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00