diff options
| author | Alexei Starovoitov <ast@kernel.org> | 2022-02-11 13:13:04 -0800 |
|---|---|---|
| committer | Alexei Starovoitov <ast@kernel.org> | 2022-02-11 13:13:04 -0800 |
| commit | acc3c47394a1790b4023ca316ac46e798338dd1a (patch) | |
| tree | 54d657bc7593fa1eae529ceec59827dd754b5d32 /include/linux | |
| parent | 4a11678f683814df82fca9018d964771e02d7e6d (diff) | |
| parent | a7e75016a0753c24d6c995bc02501ae35368e333 (diff) | |
Merge branch 'Fix for crash due to overwrite in copy_map_value'
Kumar Kartikeya says:
====================
A fix for an oversight in copy_map_value that leads to kernel crash.
Also, a question for BPF developers:
It seems in arraymap.c, we always do check_and_free_timer_in_array after we do
copy_map_value in map_update_elem callback, but the same is not done for
hashtab.c. Is there a specific reason for this difference in behavior, or did I
miss that it happens for hashtab.c as well?
Changlog:
---------
v1 -> v2:
v1: https://lore.kernel.org/bpf/20220209051113.870717-1-memxor@gmail.com
* Fix build error for selftests patch due to missing SYS_PREFIX in bpf tree
====================
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/bpf.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/bpf.h b/include/linux/bpf.h index fa517ae604ad..31a83449808b 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -224,7 +224,8 @@ static inline void copy_map_value(struct bpf_map *map, void *dst, void *src) if (unlikely(map_value_has_spin_lock(map))) { s_off = map->spin_lock_off; s_sz = sizeof(struct bpf_spin_lock); - } else if (unlikely(map_value_has_timer(map))) { + } + if (unlikely(map_value_has_timer(map))) { t_off = map->timer_off; t_sz = sizeof(struct bpf_timer); } |
