On Thu, Jul 23, 2020 at 11:41:08AM -0700, Yonghong Song wrote: > Bpf iterator has been implemented for task, task_file, > bpf_map, ipv6_route, netlink, tcp and udp so far. > > For map elements, there are two ways to traverse all elements from > user space: > 1. using BPF_MAP_GET_NEXT_KEY bpf subcommand to get elements > one by one. > 2. using BPF_MAP_LOOKUP_BATCH bpf subcommand to get a batch of > elements. > Both these approaches need to copy data from kernel to user space > in order to do inspection. > > This patch implements bpf iterator for map elements. > User can have a bpf program in kernel to run with each map element, > do checking, filtering, aggregation, modifying values etc. > without copying data to user space. > > Patch #1 and #2 are refactoring. Patch #3 implements readonly/readwrite > buffer support in verifier. Patches #4 - #7 implements map element > support for hash, percpu hash, lru hash lru percpu hash, array, > percpu array and sock local storage maps. Patches #8 - #9 are libbpf > and bpftool support. Patches #10 - #13 are selftests for implemented > map element iterators. > > Changelogs: > v3 -> v4: > . fix a kasan failure triggered by a failed bpf_iter link_create, > not just free_link but need cleanup_link. (Alexei) Applied, Thanks