diff options
author | Benjamin Tissoires <bentiss@kernel.org> | 2024-04-20 11:09:09 +0200 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2024-04-24 03:31:25 +0200 |
commit | 246331e3f1eac905170a923f0ec76725c2558232 (patch) | |
tree | 1755b8cb148983f6d91ea433cbad3d2432167300 /kernel/bpf/helpers.c | |
parent | bpf: add support for KF_ARG_PTR_TO_WORKQUEUE (diff) | |
download | linux-246331e3f1eac905170a923f0ec76725c2558232.tar.xz linux-246331e3f1eac905170a923f0ec76725c2558232.zip |
bpf: allow struct bpf_wq to be embedded in arraymaps and hashmaps
Currently bpf_wq_cancel_and_free() is just a placeholder as there is
no memory allocation for bpf_wq just yet.
Again, duplication of the bpf_timer approach
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
Link: https://lore.kernel.org/r/20240420-bpf_wq-v2-9-6c986a5a741f@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel/bpf/helpers.c')
-rw-r--r-- | kernel/bpf/helpers.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c index 0b8ba6c81994..fe827f6e5234 100644 --- a/kernel/bpf/helpers.c +++ b/kernel/bpf/helpers.c @@ -1468,6 +1468,14 @@ void bpf_timer_cancel_and_free(void *val) kfree_rcu(t, cb.rcu); } +/* This function is called by map_delete/update_elem for individual element and + * by ops->map_release_uref when the user space reference to a map reaches zero. + */ +void bpf_wq_cancel_and_free(void *val) +{ + BTF_TYPE_EMIT(struct bpf_wq); +} + BPF_CALL_2(bpf_kptr_xchg, void *, map_value, void *, ptr) { unsigned long *kptr = map_value; |