linux/arch
Oleg Nesterov 29a5551341 ptrace/x86: dont delay "disable" till second pass in ptrace_write_dr7()
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 24f1e32c60 ("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 44234adcdc
("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: Oleg Nesterov <oleg@redhat.com>
Acked-by: Frederic 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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-07-09 10:33:26 -07:00
..
alpha mm/ALPHA: clean up unused VALID_PAGE() 2013-07-03 16:07:39 -07:00
arc mm: invoke oom-killer from remaining unconverted page fault handlers 2013-07-09 10:33:20 -07:00
arm ptrace/arm: revert "hw_breakpoints: Fix racy access to ptrace breakpoints" 2013-07-09 10:33:25 -07:00
arm64 tmem hypercall for arm and arm64 2013-07-06 12:38:42 -07:00
avr32 Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
blackfin Merge branch 'kconfig-diet' from Dave Hansen 2013-07-04 11:25:51 -07:00
c6x Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
cris Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
frv Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-07-04 11:40:58 -07:00
h8300 Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
hexagon mm/hexagon: prepare for removing num_physpages and simplify mem_init() 2013-07-03 16:07:36 -07:00
ia64 Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
m32r Merge branch 'kconfig-diet' from Dave Hansen 2013-07-04 11:25:51 -07:00
m68k Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
metag mm: invoke oom-killer from remaining unconverted page fault handlers 2013-07-09 10:33:20 -07:00
microblaze mm/microblaze: clean up unused VALID_PAGE() 2013-07-03 16:07:40 -07:00
mips Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2013-07-07 11:11:43 -07:00
mn10300 mm: invoke oom-killer from remaining unconverted page fault handlers 2013-07-09 10:33:20 -07:00
openrisc mm: invoke oom-killer from remaining unconverted page fault handlers 2013-07-09 10:33:20 -07:00
parisc Merge branch 'kconfig-diet' from Dave Hansen 2013-07-04 11:25:51 -07:00
powerpc ptrace/powerpc: revert "hw_breakpoints: Fix racy access to ptrace breakpoints" 2013-07-09 10:33:25 -07:00
s390 Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-07-04 10:29:23 -07:00
score mm: invoke oom-killer from remaining unconverted page fault handlers 2013-07-09 10:33:20 -07:00
sh ptrace/sh: revert "hw_breakpoints: Fix racy access to ptrace breakpoints" 2013-07-09 10:33:26 -07:00
sparc Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-07-04 10:29:23 -07:00
tile mm: invoke oom-killer from remaining unconverted page fault handlers 2013-07-09 10:33:20 -07:00
um mm/um: prepare for removing num_physpages and simplify mem_init() 2013-07-03 16:07:37 -07:00
unicore32 Merge branch 'akpm' (updates from Andrew Morton) 2013-07-03 17:12:13 -07:00
x86 ptrace/x86: dont delay "disable" till second pass in ptrace_write_dr7() 2013-07-09 10:33:26 -07:00
xtensa mm/xtensa: prepare for removing num_physpages and simplify mem_init() 2013-07-03 16:07:38 -07:00
.gitignore
Kconfig mm: soft-dirty bits for user memory changes tracking 2013-07-03 16:07:26 -07:00