bpf: Allow loading of a bpf_iter program
A bpf_iter program is a tracing program with attach type BPF_TRACE_ITER. The load attribute attach_btf_id is used by the verifier against a particular kernel function, which represents a target, e.g., __bpf_iter__bpf_map for target bpf_map which is implemented later. The program return value must be 0 or 1 for now. 0 : successful, except potential seq_file buffer overflow which is handled by seq_file reader. 1 : request to restart the same object In the future, other return values may be used for filtering or teminating the iterator. 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/20200509175900.2474947-1-yhs@fb.com
This commit is contained in:

committed by
Alexei Starovoitov

parent
ae24345da5
commit
15d83c4d7c
@@ -1127,6 +1127,8 @@ struct bpf_link *bpf_link_get_from_fd(u32 ufd);
|
||||
int bpf_obj_pin_user(u32 ufd, const char __user *pathname);
|
||||
int bpf_obj_get_user(const char __user *pathname, int flags);
|
||||
|
||||
#define BPF_ITER_FUNC_PREFIX "__bpf_iter__"
|
||||
|
||||
typedef int (*bpf_iter_init_seq_priv_t)(void *private_data);
|
||||
typedef void (*bpf_iter_fini_seq_priv_t)(void *private_data);
|
||||
|
||||
@@ -1140,6 +1142,7 @@ struct bpf_iter_reg {
|
||||
|
||||
int bpf_iter_reg_target(struct bpf_iter_reg *reg_info);
|
||||
void bpf_iter_unreg_target(const char *target);
|
||||
bool bpf_iter_prog_supported(struct bpf_prog *prog);
|
||||
|
||||
int bpf_percpu_hash_copy(struct bpf_map *map, void *key, void *value);
|
||||
int bpf_percpu_array_copy(struct bpf_map *map, void *key, void *value);
|
||||
|
Reference in New Issue
Block a user