uprobes/x86: Only rep+nop can be emulated correctly
authorOleg Nesterov <oleg@redhat.com>
Sat, 29 Sep 2012 19:31:08 +0000 (21:31 +0200)
committerOleg Nesterov <oleg@redhat.com>
Sun, 7 Oct 2012 19:19:40 +0000 (21:19 +0200)
commitb64b9c937a533f0bfbfc9f6ac93d3c3e2f97ab02
treea0d09be7f8be3c3afda0a2be45378a2935cba9f3
parentec75fba93ef0c00c91545b5e53841a80cffad0c4
uprobes/x86: Only rep+nop can be emulated correctly

__skip_sstep() correctly detects the "nontrivial" nop insns,
but since it doesn't update regs->ip we can not really skip
"0x0f 0x1f | 0x0f 0x19 | 0x87 0xc0", the probed application
is killed by SIGILL'ed handle_swbp().

Remove these additional checks. If we want to implement this
correctly we need to know the full insn length to update ->ip.

rep* + nop is fine even without updating ->ip.

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