Commit e2a800be authored by Michael Neuling's avatar Michael Neuling Committed by Benjamin Herrenschmidt

powerpc/hw_brk: Fix off by one error when validating DAWR region end

The Data Address Watchpoint Register (DAWR) on POWER8 can take a 512
byte range but this range must not cross a 512 byte boundary.

Unfortunately we were off by one when calculating the end of the region,
hence we were not allowing some breakpoint regions which were actually
valid.  This fixes this error.
Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
Reported-by: default avatarEdjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
Cc: stable@vger.kernel.org # 3.9+
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 40847e56
...@@ -176,7 +176,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp) ...@@ -176,7 +176,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
length_max = 512 ; /* 64 doublewords */ length_max = 512 ; /* 64 doublewords */
/* DAWR region can't cross 512 boundary */ /* DAWR region can't cross 512 boundary */
if ((bp->attr.bp_addr >> 10) != if ((bp->attr.bp_addr >> 10) !=
((bp->attr.bp_addr + bp->attr.bp_len) >> 10)) ((bp->attr.bp_addr + bp->attr.bp_len - 1) >> 10))
return -EINVAL; return -EINVAL;
} }
if (info->len > if (info->len >
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment