On Wed, 2017-06-14 at 15:44:00 UTC, "Naveen N. Rao" wrote: > 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 <gdua...@redhat.com> > Reported-by: z...@redhat.com > Signed-off-by: Naveen N. Rao <naveen.n....@linux.vnet.ibm.com> > Acked-by: Srikar Dronamraju <sri...@linux.vnet.ibm.com>
Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/2dea1d9c38e481051fa0e62807e518 cheers