• Oleg Nesterov's avatar
    ptrace/x86: dont delay "disable" till second pass in ptrace_write_dr7() · 29a55513
    Oleg Nesterov authored
    ptrace_write_dr7() skips ptrace_modify_breakpoint(disabled => true)
    unless second_pass, this buys nothing but complicates the code and means
    that we always do the main loop twice even if "disabled" was never true.
    
    The comment says:
    
    	Don't unregister the breakpoints right-away,
    	unless all register_user_hw_breakpoint()
    	requests have succeeded.
    
    Firstly, we do not do register_user_hw_breakpoint(), it was removed by
    commit 24f1e32c ("hw-breakpoints: Rewrite the hw-breakpoints layer
    on top of perf events").
    
    We are going to restore register_user_hw_breakpoint() (see the next
    patch) but this doesn't matter: after commit 44234adc
    ("hw-breakpoints: Modify breakpoints without unregistering them")
    perf_event_disable() can not hurt, hw_breakpoint_del() does not free the
    slot.
    
    Remove the "second_pass" check from the main loop and simplify the code.
    Since we have to check "bp != NULL" anyway, the patch also removes the
    same check in ptrace_modify_breakpoint() and moves the comment into
    ptrace_write_dr7().
    
    With this patch the second pass is only needed to restore the saved
    old_dr7.  This should never fail, so the patch adds WARN_ON() to catch
    the potential problems as Frederic suggested.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jan Kratochvil <jan.kratochvil@redhat.com>
    Cc: Michael Neuling <mikey@neuling.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Prasad <prasad@linux.vnet.ibm.com>
    Cc: Russell King <linux@arm.linux.org.uk>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    29a55513
ptrace.c 37.9 KB