From: Hou Tao <houtao1@xxxxxxxxxx> bpf_map_of_map_fd_sys_lookup_elem() returns the map id as the value for map-in-map. It will be used when userspace applications do lookup operations for map-in-map. Signed-off-by: Hou Tao <houtao1@xxxxxxxxxx> --- kernel/bpf/map_in_map.c | 6 ++++++ kernel/bpf/map_in_map.h | 1 + 2 files changed, 7 insertions(+) diff --git a/kernel/bpf/map_in_map.c b/kernel/bpf/map_in_map.c index 96e32f4167c4e..3cd08e7fb86e6 100644 --- a/kernel/bpf/map_in_map.c +++ b/kernel/bpf/map_in_map.c @@ -190,3 +190,9 @@ void bpf_map_of_map_fd_put_ptr(void *ptr, bool need_defer) else bpf_inner_map_element_free_rcu(&element->rcu); } + +u32 bpf_map_of_map_fd_sys_lookup_elem(void *ptr) +{ + rcu_read_lock_held(); + return ((struct bpf_inner_map_element *)ptr)->map->id; +} diff --git a/kernel/bpf/map_in_map.h b/kernel/bpf/map_in_map.h index 8d38496e5179b..4a0d66757a065 100644 --- a/kernel/bpf/map_in_map.h +++ b/kernel/bpf/map_in_map.h @@ -22,5 +22,6 @@ u32 bpf_map_fd_sys_lookup_elem(void *ptr); void *bpf_map_of_map_fd_get_ptr(struct bpf_map *map, struct file *map_file, int ufd); void bpf_map_of_map_fd_put_ptr(void *ptr, bool need_defer); +u32 bpf_map_of_map_fd_sys_lookup_elem(void *ptr); #endif -- 2.29.2