diff options
author | 2021-12-16 02:04:26 +0000 | |
---|---|---|
committer | 2022-01-19 12:51:30 -0800 | |
commit | c4dcfdd406aa2167396ac215e351e5e4dfd7efe3 (patch) | |
tree | aa51e683b5eb4efe2cc7e0cdacf534cc0fc82a5c /tools/perf/scripts/python/export-to-sqlite.py | |
parent | bpf: Make BPF_PROG_RUN_ARRAY return -err instead of allow boolean (diff) | |
download | linux-dev-c4dcfdd406aa2167396ac215e351e5e4dfd7efe3.tar.xz linux-dev-c4dcfdd406aa2167396ac215e351e5e4dfd7efe3.zip |
bpf: Move getsockopt retval to struct bpf_cg_run_ctx
The retval value is moved to struct bpf_cg_run_ctx for ease of access
in different prog types with different context structs layouts. The
helper implementation (to be added in a later patch in the series) can
simply perform a container_of from current->bpf_ctx to retrieve
bpf_cg_run_ctx.
Unfortunately, there is no easy way to access the current task_struct
via the verifier BPF bytecode rewrite, aside from possibly calling a
helper, so a pointer to current task is added to struct bpf_sockopt_kern
so that the rewritten BPF bytecode can access struct bpf_cg_run_ctx with
an indirection.
For backward compatibility, if a getsockopt program rejects a syscall
by returning 0, an -EPERM will be generated, by having the
BPF_PROG_RUN_ARRAY_CG family macros automatically set the retval to
-EPERM. Unlike prior to this patch, this -EPERM will be visible to
ctx->retval for any other hooks down the line in the prog array.
Additionally, the restriction that getsockopt filters can only set
the retval to 0 is removed, considering that certain getsockopt
implementations may return optlen. Filters are now able to set the
value arbitrarily.
Signed-off-by: YiFei Zhu <zhuyifei@google.com>
Reviewed-by: Stanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/r/73b0325f5c29912ccea7ea57ec1ed4d388fc1d37.1639619851.git.zhuyifei@google.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/export-to-sqlite.py')
0 files changed, 0 insertions, 0 deletions