[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