Commit a1ff4e3
bpf: Fix struct_meta lookup for bpf_obj_free_fields kfunc call
Bugzilla: https://bugzilla.redhat.com/2177177
Conflicts: Change in data structure from the missing commit
07236ea ("bpf: factor out fetching basic kfunc metadata").
Unfortunately backporting 07236ea wouldn't be a clean backport
either unless several other patches would be backported too.
commit f6a6a5a
Author: Dave Marchevsky <davemarchevsky@fb.com>
Date: Mon Apr 3 13:00:27 2023 -0700
bpf: Fix struct_meta lookup for bpf_obj_free_fields kfunc call
bpf_obj_drop_impl has a void return type. In check_kfunc_call, the "else
if" which sets insn_aux->kptr_struct_meta for bpf_obj_drop_impl is
surrounded by a larger if statement which checks btf_type_is_ptr. As a
result:
* The bpf_obj_drop_impl-specific code will never execute
* The btf_struct_meta input to bpf_obj_drop is always NULL
* __bpf_obj_drop_impl will always see a NULL btf_record when called
from BPF program, and won't call bpf_obj_free_fields
* program-allocated kptrs which have fields that should be cleaned up
by bpf_obj_free_fields may instead leak resources
This patch adds a btf_type_is_void branch to the larger if and moves
special handling for bpf_obj_drop_impl there, fixing the issue.
Fixes: ac9f060 ("bpf: Introduce bpf_obj_drop")
Cc: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Link: https://lore.kernel.org/r/20230403200027.2271029-1-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Jerome Marchand <jmarchan@redhat.com>1 parent 3ab477d commit a1ff4e3
1 file changed
+9
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9238 | 9238 | | |
9239 | 9239 | | |
9240 | 9240 | | |
9241 | | - | |
9242 | | - | |
9243 | | - | |
9244 | | - | |
9245 | 9241 | | |
9246 | 9242 | | |
9247 | 9243 | | |
| |||
9319 | 9315 | | |
9320 | 9316 | | |
9321 | 9317 | | |
9322 | | - | |
| 9318 | + | |
| 9319 | + | |
| 9320 | + | |
| 9321 | + | |
| 9322 | + | |
| 9323 | + | |
| 9324 | + | |
| 9325 | + | |
| 9326 | + | |
9323 | 9327 | | |
9324 | 9328 | | |
9325 | 9329 | | |
| |||
0 commit comments