[PATCH] powerpc/uprobes: Implement arch_uretprobe_is_alive()
Srikar Dronamraju
srikar at linux.vnet.ibm.com
Thu Jun 15 16:05:38 AEST 2017
Adding Oleg and Pratyush to the cc.
> This helper is used to detect if a uprobe'd function has returned
> through a setjmp/longjmp, rather than branching to the LR that was
> updated previously by us. This fixes a SIGSEGV that gets generated when
> programs use setjmp/longjmp with uretprobes.
>
> We use the arm64 model (arch/arm64/kernel/probes/uprobes.c:
> arch_uretprobe_is_alive()) for detecting when stack frames have been
> removed from under us.
>
> Reference:
> https://marc.info/?l=linux-kernel&m=143748610330073
> commit 7b868e4802a86 ("uprobes/x86: Reimplement arch_uretprobe_is_alive()")
> commit db087ef69a2b1 ("uprobes/x86: Make arch_uretprobe_is_alive(RP_CHECK_CALL) more
> clever")
>
> Tested with the test program from:
> https://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=blob;f=testsuite/systemtap.base/bz5274.c;hb=HEAD
>
> And this script:
> $ cat test.sh
> #!/bin/bash
>
> perf probe -x ./bz5274 -a bz5274_main_return=main%return
> perf probe -x ./bz5274 -a bz5274_funca_return=funca%return
> perf probe -x ./bz5274 -a bz5274_funcb_return=funcb%return
> perf probe -x ./bz5274 -a bz5274_funcc_return=funcc%return
> perf probe -x ./bz5274 -a bz5274_funcd_return=funcd%return
>
> perf record -e 'probe_bz5274:*' -aR ./bz5274
>
> Reported-by: Gustavo Luiz Duarte <gduarte at redhat.com>
> Reported-by: zsun at redhat.com
> Signed-off-by: Naveen N. Rao <naveen.n.rao at linux.vnet.ibm.com>
Looks good to me.
Acked-by: Srikar Dronamraju <srikar at linux.vnet.ibm.com>
More information about the Linuxppc-dev
mailing list