diff options
Diffstat (limited to 'kernel/bpf/helpers.c')
-rw-r--r-- | kernel/bpf/helpers.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index fbe544761628..a411fc17d265 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c | |||
@@ -301,6 +301,22 @@ const struct bpf_func_proto bpf_spin_unlock_proto = { | |||
301 | .arg1_type = ARG_PTR_TO_SPIN_LOCK, | 301 | .arg1_type = ARG_PTR_TO_SPIN_LOCK, |
302 | }; | 302 | }; |
303 | 303 | ||
304 | void copy_map_value_locked(struct bpf_map *map, void *dst, void *src, | ||
305 | bool lock_src) | ||
306 | { | ||
307 | struct bpf_spin_lock *lock; | ||
308 | |||
309 | if (lock_src) | ||
310 | lock = src + map->spin_lock_off; | ||
311 | else | ||
312 | lock = dst + map->spin_lock_off; | ||
313 | preempt_disable(); | ||
314 | ____bpf_spin_lock(lock); | ||
315 | copy_map_value(map, dst, src); | ||
316 | ____bpf_spin_unlock(lock); | ||
317 | preempt_enable(); | ||
318 | } | ||
319 | |||
304 | #ifdef CONFIG_CGROUPS | 320 | #ifdef CONFIG_CGROUPS |
305 | BPF_CALL_0(bpf_get_current_cgroup_id) | 321 | BPF_CALL_0(bpf_get_current_cgroup_id) |
306 | { | 322 | { |