uprobes: Fix UPROBE_SKIP_SSTEP checks in handle_swbp()
authorOleg Nesterov <oleg@redhat.com>
Fri, 14 Sep 2012 16:31:23 +0000 (18:31 +0200)
committerOleg Nesterov <oleg@redhat.com>
Sat, 29 Sep 2012 19:21:52 +0000 (21:21 +0200)
commit0578a97098dab967ece4b025fe5eb4984c4c86c0
treecf48aeca0e414d1eb2cafdfd28e8e31282a58af1
parent746a9e6ba24af2ccf03279c99d435a1b88ca5d17
uprobes: Fix UPROBE_SKIP_SSTEP checks in handle_swbp()

If handle_swbp()->add_utask() fails but UPROBE_SKIP_SSTEP is set,
cleanup_ret: path do not restart the insn, this is wrong. Remove
this check and add the additional label for can_skip_sstep() = T
case.

Note also that UPROBE_SKIP_SSTEP can be false positive, we simply
can not trust it unless arch_uprobe_skip_sstep() was already called.

Also, move another UPROBE_SKIP_SSTEP check before can_skip_sstep()
into this helper, this looks more clean and understandable.

Note: probably we should rename "skip" to "emulate" and I think
that "clear UPROBE_SKIP_SSTEP" should be moved to arch_can_skip.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
kernel/events/uprobes.c