2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-29 07:34:06 +08:00
linux-next/arch/x86_64/kernel
Jim Keniston bce0649417 [PATCH] kprobes: fix handling of simultaneous probe hit/unregister
This patch fixes a bug in kprobes's handling of a corner case on i386 and
x86_64.  On an SMP system, if one CPU unregisters a kprobe just after
another CPU hits that probepoint, kprobe_handler() on the latter CPU sees
that the kprobe has been unregistered, and attempts to let the CPU continue
as if the probepoint hadn't been hit.  The bug is that on i386 and x86_64,
we were neglecting to set the IP back to the beginning of the probed
instruction.  This could cause an oops or crash.

This bug doesn't exist on ppc64 and ia64, where a breakpoint instruction
leaves the IP pointing to the beginning of the instruction.  I don't know
about sparc64.  (Dave, could you please advise?)

This fix has been tested on i386 and x86_64 SMP systems.  To reproduce the
problem, set one CPU to work registering and unregistering a kprobe
repeatedly, and another CPU pounding the probepoint in a tight loop.

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-09-07 16:58:01 -07:00
..
acpi [PATCH] s-t-RAM: load gdt the right way 2005-06-25 16:24:32 -07:00
cpufreq Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
aperture.c [PATCH] remove direct ref to contig_page_data for x86-64 2005-06-23 09:45:06 -07:00
apic.c [PATCH] kexec: x86_64: restore apic virtual wire mode on shutdown 2005-06-25 16:24:47 -07:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
crash.c [PATCH] kdump: Use real pt_regs from exception 2005-06-25 16:24:54 -07:00
e820.c [PATCH] x86_64: Fix off by one in e820_mapped 2005-09-07 16:57:16 -07:00
early_printk.c [PATCH] allow early printk to use more than 25 lines 2005-06-23 09:45:10 -07:00
entry.S [PATCH] kprobes: prevent possible race conditions x86_64 changes 2005-09-07 16:57:59 -07:00
genapic_cluster.c [PATCH] x86_64: Fix cluster mode send_IPI_allbutself to use get_cpu()/put_cpu() 2005-09-07 16:57:16 -07:00
genapic_flat.c [PATCH] x86_64: Support more than 8 cores on AMD systems 2005-07-28 21:46:01 -07:00
genapic.c [PATCH] Additions to .data.read_mostly section 2005-09-07 16:57:33 -07:00
head64.c [PATCH] reorganize x86-64 NUMA and DISCONTIGMEM config options 2005-06-23 09:45:06 -07:00
head.S [PATCH] x86_64: Small assembly improvements 2005-07-28 21:46:02 -07:00
i387.c [PATCH] x86_64: Change init sections for CPU hotplug support 2005-06-25 16:24:30 -07:00
i8259.c [PATCH] kexec: x86_64: add i8259 shutdown method 2005-06-25 16:24:46 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c [PATCH] Additions to .data.read_mostly section 2005-09-07 16:57:33 -07:00
ioport.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [PATCH] x86_64: Switch to the interrupt stack when running a softirq in local_bh_enable() 2005-07-28 21:46:02 -07:00
kprobes.c [PATCH] kprobes: fix handling of simultaneous probe hit/unregister 2005-09-07 16:58:01 -07:00
ldt.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machine_kexec.c [PATCH] x86_64 machine_kexec: Use standard pagetable helpers 2005-07-29 13:12:49 -07:00
Makefile [PATCH] ISA DMA suspend for x86_64 2005-09-05 00:06:14 -07:00
mce_intel.c [PATCH] x86_64: Change init sections for CPU hotplug support 2005-06-25 16:24:30 -07:00
mce.c [PATCH] x86_64: ignore machine checks from boot time 2005-08-07 10:00:37 -07:00
module.c [PATCH] uml: kludgy compilation fixes for x86-64 subarch modules support 2005-05-05 16:36:33 -07:00
mpparse.c [PATCH] x86_64: avoid wasting IRQs patch update 2005-07-30 13:37:50 -07:00
msr.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nmi.c [PATCH] NMI: Update NMI users of RCU to use new API 2005-09-07 16:57:19 -07:00
pci-dma.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-gart.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-nommu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pmtimer.c [PATCH] x86_64: Add pmtimer support 2005-05-17 07:59:15 -07:00
process.c [PATCH] x86_64: print processor number in show_regs 2005-09-07 16:57:15 -07:00
ptrace.c [PATCH] x86_64: TASK_SIZE fixes for compatibility mode processes 2005-06-21 18:46:12 -07:00
reboot.c [PATCH] x86_64 sync machine_power_off with i386 2005-07-26 14:35:45 -07:00
relocate_kernel.S [PATCH] kexec: x86_64 kexec implementation 2005-06-25 16:24:50 -07:00
setup64.c [PATCH] Additions to .data.read_mostly section 2005-09-07 16:57:33 -07:00
setup.c [PATCH] Additions to .data.read_mostly section 2005-09-07 16:57:33 -07:00
signal.c [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
smp.c [PATCH] Fix sync_tsc hang 2005-07-29 15:01:13 -07:00
smpboot.c [PATCH] Additions to .data.read_mostly section 2005-09-07 16:57:33 -07:00
suspend_asm.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
suspend.c [PATCH] MTRR suspend/resume cleanup 2005-07-07 18:23:42 -07:00
sys_x86_64.c [PATCH] Avoiding mmap fragmentation 2005-06-21 18:46:16 -07:00
syscall.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
time.c [PATCH] NTP: ntp-helper functions 2005-09-07 16:57:34 -07:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] kprobes: prevent possible race conditions x86_64 changes 2005-09-07 16:57:59 -07:00
vmlinux.lds.S [PATCH] kprobes: prevent possible race conditions x86_64 changes 2005-09-07 16:57:59 -07:00
vsyscall.c [PATCH] x86_64: Make vsyscall.c compile without CONFIG_SYSCTL 2005-05-17 07:59:16 -07:00
x8664_ksyms.c [PATCH] x86_64: CONFIG_BUG=n fixes 2005-05-25 15:31:28 -07:00