hi, we recently had several requests for tetragon to be able to change user application function return value or divert its execution through instruction pointer change.
This patchset adds support for uprobe program to change app's registers including instruction pointer. v4 changes: - rebased on bpf-next/master, we will handle the future simple conflict with tip/perf/core - changed condition in kprobe_prog_is_valid_access [Andrii] - added acks thanks, jirka --- Jiri Olsa (6): bpf: Allow uprobe program to change context registers uprobe: Do not emulate/sstep original instruction when ip is changed selftests/bpf: Add uprobe context registers changes test selftests/bpf: Add uprobe context ip register change test selftests/bpf: Add kprobe write ctx attach test selftests/bpf: Add kprobe multi write ctx attach test include/linux/bpf.h | 1 + kernel/events/core.c | 4 +++ kernel/events/uprobes.c | 7 +++++ kernel/trace/bpf_trace.c | 9 ++++-- tools/testing/selftests/bpf/prog_tests/attach_probe.c | 28 +++++++++++++++++ tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 27 ++++++++++++++++ tools/testing/selftests/bpf/prog_tests/uprobe.c | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- tools/testing/selftests/bpf/progs/kprobe_write_ctx.c | 22 +++++++++++++ tools/testing/selftests/bpf/progs/test_uprobe.c | 38 +++++++++++++++++++++++ 9 files changed, 289 insertions(+), 3 deletions(-) create mode 100644 tools/testing/selftests/bpf/progs/kprobe_write_ctx.c