]> git.hungrycats.org Git - linux/commitdiff
powerpc/ptrace: Fix enforcement of DAWR constraints
authorMichael Neuling <mikey@neuling.org>
Thu, 17 May 2018 05:37:14 +0000 (15:37 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Jul 2018 09:21:29 +0000 (11:21 +0200)
commit cd6ef7eebf171bfcba7dc2df719c2a4958775040 upstream.

Back when we first introduced the DAWR, in commit 4ae7ebe9522a
("powerpc: Change hardware breakpoint to allow longer ranges"), we
screwed up the constraint making it a 1024 byte boundary rather than a
512. This makes the check overly permissive. Fortunately GDB is the
only real user and it always did they right thing, so we never
noticed.

This fixes the constraint to 512 bytes.

Fixes: 4ae7ebe9522a ("powerpc: Change hardware breakpoint to allow longer ranges")
Cc: stable@vger.kernel.org # v3.9+
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/kernel/hw_breakpoint.c

index fdf48785d3e9f8a9a4b1ccc7d9d065b621f8326b..56e4571e3a023d5be214e6fe171130fd10b87736 100644 (file)
@@ -174,8 +174,8 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
        if (cpu_has_feature(CPU_FTR_DAWR)) {
                length_max = 512 ; /* 64 doublewords */
                /* DAWR region can't cross 512 boundary */
-               if ((bp->attr.bp_addr >> 10) != 
-                   ((bp->attr.bp_addr + bp->attr.bp_len - 1) >> 10))
+               if ((bp->attr.bp_addr >> 9) !=
+                   ((bp->attr.bp_addr + bp->attr.bp_len - 1) >> 9))
                        return -EINVAL;
        }
        if (info->len >