Message ID | 20201205030952.520743-1-andrii@kernel.org |
---|---|
State | Superseded |
Headers | show |
Series | [bpf-next] bpf: return -EOPNOTSUPP when attaching to non-kernel BTF | expand |
On Fri, Dec 4, 2020 at 7:11 PM Andrii Nakryiko <andrii@kernel.org> wrote:
> + return -EOPNOTSUPP;
$ cd kernel/bpf
$ git grep ENOTSUPP|wc -l
46
$ git grep EOPNOTSUPP|wc -l
11
Alexei Starovoitov <alexei.starovoitov@gmail.com> writes: > On Fri, Dec 4, 2020 at 7:11 PM Andrii Nakryiko <andrii@kernel.org> wrote: >> + return -EOPNOTSUPP; > > $ cd kernel/bpf > $ git grep ENOTSUPP|wc -l > 46 > $ git grep EOPNOTSUPP|wc -l > 11 But also $ cd kernel/include/uapi $ git grep ENOTSUPP | wc -l 0 $ git grep EOPNOTSUPP | wc -l 8 (i.e., ENOTSUPP is not defined in userspace headers at all) -Toke
On Mon, Dec 7, 2020 at 6:07 AM Toke Høiland-Jørgensen <toke@redhat.com> wrote: > > Alexei Starovoitov <alexei.starovoitov@gmail.com> writes: > > > On Fri, Dec 4, 2020 at 7:11 PM Andrii Nakryiko <andrii@kernel.org> wrote: > >> + return -EOPNOTSUPP; > > > > $ cd kernel/bpf > > $ git grep ENOTSUPP|wc -l > > 46 > > $ git grep EOPNOTSUPP|wc -l > > 11 > > But also > > $ cd kernel/include/uapi > $ git grep ENOTSUPP | wc -l > 0 > $ git grep EOPNOTSUPP | wc -l > 8 > > (i.e., ENOTSUPP is not defined in userspace headers at all) that's irrelevant. The kernel returns it already. It's a known constant regardless of .h
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 0cd3cc2af9c1..7e2bf671c6db 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -2121,8 +2121,11 @@ static int bpf_prog_load(union bpf_attr *attr, union bpf_attr __user *uattr) if (IS_ERR(attach_btf)) return -EINVAL; if (!btf_is_kernel(attach_btf)) { + /* attaching through specifying bpf_prog's BTF + * objects directly might be supported eventually + */ btf_put(attach_btf); - return -EINVAL; + return -EOPNOTSUPP; } } } else if (attr->attach_btf_id) {
Return -EOPNOTSUPP if tracing BPF program is attempted to be attached with specified attach_btf_obj_fd pointing to non-kernel (neither vmlinux nor module) BTF object. This scenario might be supported in the future and isn't outright invalid, so -EINVAL isn't the most appropriate error code. Suggested-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> --- kernel/bpf/syscall.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)