bpf: Allow uprobe program to change context registers
authorJiri Olsa <jolsa@kernel.org>
Tue, 16 Sep 2025 21:52:56 +0000 (23:52 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 24 Sep 2025 09:25:06 +0000 (02:25 -0700)
commit7384893d970ea114952aef54ad7e3d7d2ca82d4f
tree9a15dbebe6ab87ef0d0d80938ac0391a2497c90a
parent34f033a6c9c94a6e71c03133f006931bf7d5678b
bpf: Allow uprobe program to change context registers

Currently uprobe (BPF_PROG_TYPE_KPROBE) program can't write to the
context registers data. While this makes sense for kprobe attachments,
for uprobe attachment it might make sense to be able to change user
space registers to alter application execution.

Since uprobe and kprobe programs share the same type (BPF_PROG_TYPE_KPROBE),
we can't deny write access to context during the program load. We need
to check on it during program attachment to see if it's going to be
kprobe or uprobe.

Storing the program's write attempt to context and checking on it
during the attachment.

Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20250916215301.664963-2-jolsa@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/linux/bpf.h
kernel/events/core.c
kernel/trace/bpf_trace.c