• Will Deacon's avatar
    ARM: hw_breakpoint: do not allocate new breakpoints with preemption disabled · 93a04a34
    Will Deacon authored
    The watchpoint single-stepping code calls register_user_hw_breakpoint to
    register a mismatch breakpoint for stepping over the watchpoint. This is
    performed with preemption disabled, which is unsafe as we may end up scheduling
    whilst in_atomic(). Furthermore, using the perf API is rather overkill since
    we are already in the hw-breakpoint backend and only require access to reserved
    breakpoints anyway.
    
    This patch reworks the watchpoint stepping code so that we don't require
    another perf_event for the mismatch breakpoint. Instead, we hold a separate
    arch_hw_breakpoint_ctrl struct inside the watchpoint which is used exclusively
    for stepping. We can check whether or not stepping is enabled when installing
    or uninstalling the watchpoint and operate on the breakpoint accordingly.
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    93a04a34
hw_breakpoint.h 3.35 KB