summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/ptrace.c
diff options
context:
space:
mode:
authorMichael Neuling2013-06-24 07:47:22 +0200
committerBenjamin Herrenschmidt2013-06-25 09:24:39 +0200
commitb0b0aa9c7faf94e92320eabd8a1786c7747e40a8 (patch)
tree6b93f3c7d29c8e8b2b4d65f72dafe0693ea0ae20 /arch/powerpc/kernel/ptrace.c
parentmacintosh/adb: Replace __WAITQUEUE_INITIALIZER with more standard DECLARE_WAI... (diff)
downloadkernel-qcow2-linux-b0b0aa9c7faf94e92320eabd8a1786c7747e40a8.tar.gz
kernel-qcow2-linux-b0b0aa9c7faf94e92320eabd8a1786c7747e40a8.tar.xz
kernel-qcow2-linux-b0b0aa9c7faf94e92320eabd8a1786c7747e40a8.zip
powerpc/hw_brk: Fix setting of length for exact mode breakpoints
The smallest match region for both the DABR and DAWR is 8 bytes, so the kernel needs to filter matches when users want to look at regions smaller than this. Currently we set the length of PPC_BREAKPOINT_MODE_EXACT breakpoints to 8. This is wrong as in exact mode we should only match on 1 address, hence the length should be 1. This ensures that the kernel will filter out any exact mode hardware breakpoint matches on any addresses other than the requested one. Signed-off-by: Michael Neuling <mikey@neuling.org> Reported-by: Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com> Cc: stable@vger.kernel.org Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/ptrace.c')
-rw-r--r--arch/powerpc/kernel/ptrace.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 98c2fc198712..64f7bd5b1b0f 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -1449,7 +1449,9 @@ static long ppc_set_hwdebug(struct task_struct *child,
*/
if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE) {
len = bp_info->addr2 - bp_info->addr;
- } else if (bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT) {
+ } else if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_EXACT)
+ len = 1;
+ else {
ptrace_put_breakpoints(child);
return -EINVAL;
}