linux/arch
Frederic Weisbecker 326264a024 hw-breakpoint: Keep track of dr7 local enable bits
When the user enables breakpoints through dr7, he can choose
between "local" or "global" enable bits but given how linux is
implemented, both have the same effect.

That said we don't keep track how the user enabled the breakpoints
so when the user requests the dr7 value, we only translate the
"enabled" status using the global enabled bits. It means that if
the user enabled a breakpoint using the local enabled bit, reading
back dr7 will set the global bit and clear the local one.

Apps like Wine expect a full dr7 POKEUSER/PEEKUSER match for emulated
softwares that implement old reverse engineering protection schemes.

We fix that by keeping track of the whole dr7 value given by the user
in the thread structure to drop this bug. We'll think about
something more proper later.

This fixes a 2.6.32 - 2.6.33-x ptrace regression.

Reported-and-tested-by: Michael Stefaniuc <mstefani@redhat.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: K.Prasad <prasad@linux.vnet.ibm.com>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Maneesh Soni <maneesh@linux.vnet.ibm.com>
Cc: Alexandre Julliard <julliard@winehq.org>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Maciej Rutecki <maciej.rutecki@gmail.com>
2010-02-19 19:06:48 +01:00
..
alpha alpha: cpumask_of_node() should handle -1 as a node 2010-01-14 13:21:35 -05:00
arm [ARM] Update mach-types 2010-01-28 22:17:45 +00:00
avr32
blackfin
cris
frv
h8300
ia64
m32r
m68k
m68knommu m68knommu: fix invalid flags on coldfire pit clocksource 2010-01-16 12:15:38 -08:00
microblaze microblaze: pci_controller->arch_data really is a struct device_node * 2010-01-18 16:36:07 +01:00
mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2010-02-02 12:45:33 -08:00
mn10300
parisc
powerpc powerpc: TIF_ABI_PENDING bit removal 2010-02-01 14:00:30 +11:00
s390 [S390] fix single stepped svcs with TRACE_IRQFLAGS=y 2010-01-27 10:12:49 +01:00
score
sh sh: Fix access to released memory in clk_debugfs_register_one() 2010-02-02 11:32:23 +09:00
sparc sparc: TIF_ABI_PENDING bit removal 2010-01-29 08:22:01 -08:00
um Unrot uml mconsole a bit 2010-01-14 09:05:26 -05:00
x86 hw-breakpoint: Keep track of dr7 local enable bits 2010-02-19 19:06:48 +01:00
xtensa
.gitignore
Kconfig