forked from mirrors/linux
		
	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
					
				
					 1 changed files with 19 additions and 0 deletions
				
			
		|  | @ -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 a new issue
	
	 Kumar Kartikeya Dwivedi
						Kumar Kartikeya Dwivedi