Re: [PATCH] ARM: hw_breakpoint: Handle inexact watchpoint addresses

From: Will Deacon
Date: Wed Nov 20 2019 - 14:18:20 EST


On Sat, Oct 19, 2019 at 11:12:26AM -0700, Douglas Anderson wrote:
> This is commit fdfeff0f9e3d ("arm64: hw_breakpoint: Handle inexact
> watchpoint addresses") but ported to arm32, which has the same
> problem.
>
> This problem was found by Android CTS tests, notably the
> "watchpoint_imprecise" test [1]. I tested locally against a copycat
> (simplified) version of the test though.
>
> [1] https://android.googlesource.com/platform/bionic/+/master/tests/sys_ptrace_test.cpp
>
> Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
> ---
>
> arch/arm/kernel/hw_breakpoint.c | 96 ++++++++++++++++++++++++---------
> 1 file changed, 70 insertions(+), 26 deletions(-)

Sorry for taking so long to look at this. After wrapping my head around the
logic again, I think it looks fine, so please put it into the patch system
with my Ack:

Acked-by: Will Deacon <will@xxxxxxxxxx>

One interesting difference between the implementation here and the arm64
code is that I think if you have multiple watchpoints, all of which fire
with a distance != 0, then arm32 will actually report them all whereas
you'd only get one on arm64.

Will