Remove redundant map_pop_elem callbacks with return -EOPNOTSUPP. We can directly return -EOPNOTSUPP when calling the unimplemented callbacks. Signed-off-by: Xiaomeng Zhang <zhangxiaomeng13@xxxxxxxxxx> --- kernel/bpf/arena.c | 6 ------ kernel/bpf/bloom_filter.c | 6 ------ kernel/bpf/helpers.c | 5 ++++- kernel/bpf/syscall.c | 5 ++++- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/kernel/bpf/arena.c b/kernel/bpf/arena.c index 7ee98aeccf3c..2c95baa8ece2 100644 --- a/kernel/bpf/arena.c +++ b/kernel/bpf/arena.c @@ -62,11 +62,6 @@ u64 bpf_arena_get_user_vm_start(struct bpf_arena *arena) return arena ? arena->user_vm_start : 0; } -static long arena_map_pop_elem(struct bpf_map *map, void *value) -{ - return -EOPNOTSUPP; -} - static long arena_map_delete_elem(struct bpf_map *map, void *value) { return -EOPNOTSUPP; @@ -393,7 +388,6 @@ const struct bpf_map_ops arena_map_ops = { .map_mmap = arena_map_mmap, .map_get_unmapped_area = arena_get_unmapped_area, .map_get_next_key = arena_map_get_next_key, - .map_pop_elem = arena_map_pop_elem, .map_lookup_elem = arena_map_lookup_elem, .map_update_elem = arena_map_update_elem, .map_delete_elem = arena_map_delete_elem, diff --git a/kernel/bpf/bloom_filter.c b/kernel/bpf/bloom_filter.c index 35e1ddca74d2..d8d4dd7b711d 100644 --- a/kernel/bpf/bloom_filter.c +++ b/kernel/bpf/bloom_filter.c @@ -65,11 +65,6 @@ static long bloom_map_push_elem(struct bpf_map *map, void *value, u64 flags) return 0; } -static long bloom_map_pop_elem(struct bpf_map *map, void *value) -{ - return -EOPNOTSUPP; -} - static long bloom_map_delete_elem(struct bpf_map *map, void *value) { return -EOPNOTSUPP; @@ -209,7 +204,6 @@ const struct bpf_map_ops bloom_filter_map_ops = { .map_get_next_key = bloom_map_get_next_key, .map_push_elem = bloom_map_push_elem, .map_peek_elem = bloom_map_peek_elem, - .map_pop_elem = bloom_map_pop_elem, .map_lookup_elem = bloom_map_lookup_elem, .map_update_elem = bloom_map_update_elem, .map_delete_elem = bloom_map_delete_elem, diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 000409c8308a..cb61c06155c8 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -106,7 +106,10 @@ const struct bpf_func_proto bpf_map_push_elem_proto = { BPF_CALL_2(bpf_map_pop_elem, struct bpf_map *, map, void *, value) { - return map->ops->map_pop_elem(map, value); + if (map->ops->map_pop_elem) + return map->ops->map_pop_elem(map, value); + else + return -EOPNOTSUPP; } const struct bpf_func_proto bpf_map_pop_elem_proto = { diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 79a118ea9270..c6f55283f4ff 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -2142,7 +2142,10 @@ static int map_lookup_and_delete_elem(union bpf_attr *attr) err = -ENOTSUPP; if (map->map_type == BPF_MAP_TYPE_QUEUE || map->map_type == BPF_MAP_TYPE_STACK) { - err = map->ops->map_pop_elem(map, value); + if (map->ops->map_pop_elem) + err = map->ops->map_pop_elem(map, value); + else + err = -EOPNOTSUPP; } else if (map->map_type == BPF_MAP_TYPE_HASH || map->map_type == BPF_MAP_TYPE_PERCPU_HASH || map->map_type == BPF_MAP_TYPE_LRU_HASH || -- 2.34.1