Messages in this thread | | | Date | Mon, 19 Sep 2022 22:30:16 -0700 | Subject | Re: [PATCH v18 02/13] btf: Export bpf_dynptr definition | From | Yonghong Song <> |
| |
On 9/19/22 7:27 AM, Roberto Sassu wrote: > From: Roberto Sassu <roberto.sassu@huawei.com> > > eBPF dynamic pointers is a new feature recently added to upstream. It binds > together a pointer to a memory area and its size. The internal kernel > structure bpf_dynptr_kern is not accessible by eBPF programs in user space. > They instead see bpf_dynptr, which is then translated to the internal > kernel structure by the eBPF verifier. > > The problem is that it is not possible to include at the same time the uapi > include linux/bpf.h and the vmlinux BTF vmlinux.h, as they both contain the > definition of some structures/enums. The compiler complains saying that the > structures/enums are redefined. > > As bpf_dynptr is defined in the uapi include linux/bpf.h, this makes it > impossible to include vmlinux.h. However, in some cases, e.g. when using > kfuncs, vmlinux.h has to be included. The only option until now was to > include vmlinux.h and add the definition of bpf_dynptr directly in the eBPF > program source code from linux/bpf.h. > > Solve the problem by using the same approach as for bpf_timer (which also > follows the same scheme with the _kern suffix for the internal kernel > structure). > > Add the following line in one of the dynamic pointer helpers, > bpf_dynptr_from_mem(): > > BTF_TYPE_EMIT(struct bpf_dynptr); > > Cc: stable@vger.kernel.org > Cc: Joanne Koong <joannelkoong@gmail.com> > Fixes: 97e03f521050c ("bpf: Add verifier support for dynptrs") > Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
Acked-by: Yonghong Song <yhs@fb.com>
| |