TencentOS-kernel/kernel/bpf
Yonghong Song 248010d2fd bpf: Implement bpf_seq_read() for bpf iterator
[upstream commit fd4f12bc38c3ad9107169e7c9e6e7f81d93dda97]

bpf iterator uses seq_file to provide a lossless
way to transfer data to user space. But we want to call
bpf program after all objects have been traversed, and
bpf program may write additional data to the
seq_file buffer. The current seq_read() does not work
for this use case.

Besides allowing stop() function to write to the buffer,
the bpf_seq_read() also fixed the buffer size to one page.
If any single call of show() or stop() will emit data
more than one page to cause overflow, -E2BIG error code
will be returned to user space.

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200509175904.2475468-1-yhs@fb.com
2022-06-21 10:27:11 +08:00
..
Makefile bpf: Implement an interface to register bpf_iter targets 2022-06-21 10:27:11 +08:00
arraymap.c bpf: Simplify __bpf_arch_text_poke poke type handling 2022-06-21 10:27:06 +08:00
bpf_iter.c bpf: Implement bpf_seq_read() for bpf iterator 2022-06-21 10:27:11 +08:00
bpf_lru_list.c bpf_lru_list: Read double-checked variable once without lock 2021-04-12 12:52:15 +08:00
bpf_lru_list.h Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
bpf_lsm.c bpf: lsm: Implement attach, detach and execution 2022-06-21 10:27:08 +08:00
bpf_struct_ops.c bpf: Refactor trampoline update code 2022-06-21 10:27:07 +08:00
bpf_struct_ops_types.h bpf: tcp: Support tcp_congestion_ops in bpf 2022-06-21 10:27:05 +08:00
btf.c bpf: Add support for BPF_OBJ_GET_INFO_BY_FD for bpf_link 2022-06-21 10:27:09 +08:00
cgroup.c bpf, cgroup: Return ENOLINK for auto-detached links on update 2022-06-21 10:27:09 +08:00
core.c bpf, netns: Handle multiple link attachments 2022-06-21 10:27:10 +08:00
cpumap.c cpumap: Avoid warning when CONFIG_DEBUG_PER_CPU_MAPS is enabled 2021-03-16 16:27:10 +08:00
devmap.c devmap: Use bpf_map_area_alloc() for allocating hash buckets 2021-03-16 16:30:57 +08:00
disasm.c bpf: Introduce BPF nospec instruction for mitigating Spectre v4 2022-06-21 10:27:02 +08:00
disasm.h Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
dispatcher.c bpf: Introduce BPF dispatcher 2022-06-21 10:27:06 +08:00
hashtab.c bpf: Factor out hashtab bucket lock operations 2022-06-21 10:27:08 +08:00
helpers.c bpf: Fix helper bpf_map_peek_elem_proto pointing to wrong callback 2021-03-16 16:44:00 +08:00
inode.c bpf: Introduce pinnable bpf_link abstraction 2022-06-21 10:27:08 +08:00
local_storage.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
lpm_trie.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
map_in_map.c bpf: Move owner type, jited info into array auxiliary data 2022-06-21 10:27:05 +08:00
map_in_map.h Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
net_namespace.c inet: Run SK_LOOKUP BPF program on socket lookup 2022-06-21 10:27:10 +08:00
offload.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
percpu_freelist.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
percpu_freelist.h Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
queue_stack_maps.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
reuseport_array.c net: Generate reuseport group ID on group creation 2022-06-21 10:27:07 +08:00
stackmap.c bpf: Check for integer overflow when using roundup_pow_of_two() 2021-04-12 12:52:03 +08:00
syscall.c bpf: Support bpf tracing/iter programs for BPF_LINK_CREATE 2022-06-21 10:27:11 +08:00
sysfs_btf.c bpf: Fix sysfs export of empty BTF section 2021-03-16 16:37:55 +08:00
tnum.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
trampoline.c bpf: lsm: Implement attach, detach and execution 2022-06-21 10:27:08 +08:00
verifier.c bpf: Allow loading of a bpf_iter program 2022-06-21 10:27:11 +08:00
xskmap.c bpf: Implement map_gen_lookup() callback for XSKMAP 2022-06-21 10:27:03 +08:00