MIPS: uprobes: fix incorrect uprobe brk handling
When a uprobe-replacement breakpoint instruction is handled, a notifier is called with DIE_UPROBE argument, but a corresponding exception notify handler for MIPS attempts to handle DIE_BREAK instead. As a result the breakpoint instruction isn't handled by the uprobe code and the probed application terminates with SIGTRAP. Fix this by changing arch_uprobe_exception_notify code to handle DIE_UPROBE as a pre-singlestep condition instead of DIE_BREAK. Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/13884/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
e3b23148fd
commit
2809328f6e
|
@ -222,7 +222,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self,
|
||||||
return NOTIFY_DONE;
|
return NOTIFY_DONE;
|
||||||
|
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case DIE_BREAK:
|
case DIE_UPROBE:
|
||||||
if (uprobe_pre_sstep_notifier(regs))
|
if (uprobe_pre_sstep_notifier(regs))
|
||||||
return NOTIFY_STOP;
|
return NOTIFY_STOP;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue