Message ID | 20221021114913.60508-3-houtao@huaweicloud.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fa4447cb73b2bfe7175f1b7ffdc70580fcfcb991 |
Delegated to: | BPF |
Headers | show |
Series | Wait for busy refill_work when destroying bpf memory allocator | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for bpf |
netdev/fixes_present | success | Fixes tag present in non-next series |
netdev/subject_prefix | success | Link |
netdev/cover_letter | success | Series has a cover letter |
netdev/patch_count | success | Link |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 5 this patch: 5 |
netdev/cc_maintainers | success | CCed 12 of 12 maintainers |
netdev/build_clang | success | Errors and warnings before: 5 this patch: 5 |
netdev/module_param | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 5 this patch: 5 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 19 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
bpf/vmtest-bpf-PR | fail | PR summary |
bpf/vmtest-bpf-VM_Test-6 | success | Logs for set-matrix |
bpf/vmtest-bpf-VM_Test-1 | pending | Logs for build for s390x with gcc |
bpf/vmtest-bpf-VM_Test-4 | success | Logs for llvm-toolchain |
bpf/vmtest-bpf-VM_Test-5 | success | Logs for set-matrix |
bpf/vmtest-bpf-VM_Test-2 | fail | Logs for build for x86_64 with gcc |
bpf/vmtest-bpf-VM_Test-3 | fail | Logs for build for x86_64 with llvm-16 |
diff --git a/kernel/bpf/memalloc.c b/kernel/bpf/memalloc.c index 4e4b3250aada..8f0d65f2474a 100644 --- a/kernel/bpf/memalloc.c +++ b/kernel/bpf/memalloc.c @@ -423,14 +423,17 @@ static void drain_mem_cache(struct bpf_mem_cache *c) /* No progs are using this bpf_mem_cache, but htab_map_free() called * bpf_mem_cache_free() for all remaining elements and they can be in * free_by_rcu or in waiting_for_gp lists, so drain those lists now. + * + * Except for waiting_for_gp list, there are no concurrent operations + * on these lists, so it is safe to use __llist_del_all(). */ llist_for_each_safe(llnode, t, __llist_del_all(&c->free_by_rcu)) free_one(c, llnode); llist_for_each_safe(llnode, t, llist_del_all(&c->waiting_for_gp)) free_one(c, llnode); - llist_for_each_safe(llnode, t, llist_del_all(&c->free_llist)) + llist_for_each_safe(llnode, t, __llist_del_all(&c->free_llist)) free_one(c, llnode); - llist_for_each_safe(llnode, t, llist_del_all(&c->free_llist_extra)) + llist_for_each_safe(llnode, t, __llist_del_all(&c->free_llist_extra)) free_one(c, llnode); }