mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 17:11:33 +00:00
bpf: Add zero_map_value to zero map value with special fields
We need this helper to skip over special fields (bpf_spin_lock, bpf_timer, kptrs) while zeroing a map value. Use the same logic as copy_map_value but memset instead of memcpy. Currently, the code zeroing map value memory does not have to deal with special fields, hence this is a prerequisite for introducing such support. Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Link: https://lore.kernel.org/r/20220904204145.3089-4-memxor@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
6df4ea1ff0
commit
cc48755808
@ -329,6 +329,25 @@ static inline void copy_map_value_long(struct bpf_map *map, void *dst, void *src
|
||||
__copy_map_value(map, dst, src, true);
|
||||
}
|
||||
|
||||
static inline void zero_map_value(struct bpf_map *map, void *dst)
|
||||
{
|
||||
u32 curr_off = 0;
|
||||
int i;
|
||||
|
||||
if (likely(!map->off_arr)) {
|
||||
memset(dst, 0, map->value_size);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < map->off_arr->cnt; i++) {
|
||||
u32 next_off = map->off_arr->field_off[i];
|
||||
|
||||
memset(dst + curr_off, 0, next_off - curr_off);
|
||||
curr_off += map->off_arr->field_sz[i];
|
||||
}
|
||||
memset(dst + curr_off, 0, map->value_size - curr_off);
|
||||
}
|
||||
|
||||
void copy_map_value_locked(struct bpf_map *map, void *dst, void *src,
|
||||
bool lock_src);
|
||||
void bpf_timer_cancel_and_free(void *timer);
|
||||
|
Loading…
Reference in New Issue
Block a user