projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
f2858f3
)
bpf: fix possible endless loop in BPF map iteration
author
Brandon Kammerdiener
<brandon.kammerdiener@intel.com>
Thu, 24 Apr 2025 15:32:51 +0000
(11:32 -0400)
committer
Alexei Starovoitov
<ast@kernel.org>
Fri, 25 Apr 2025 15:36:59 +0000
(08:36 -0700)
The _safe variant used here gets the next element before running the callback,
avoiding the endless loop condition.
Signed-off-by: Brandon Kammerdiener <brandon.kammerdiener@intel.com>
Link:
https://lore.kernel.org/r/20250424153246.141677-2-brandon.kammerdiener@intel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Hou Tao <houtao1@huawei.com>
kernel/bpf/hashtab.c
patch
|
blob
|
history
diff --git
a/kernel/bpf/hashtab.c
b/kernel/bpf/hashtab.c
index
5a5adc6
..
92b606d
100644
(file)
--- a/
kernel/bpf/hashtab.c
+++ b/
kernel/bpf/hashtab.c
@@
-2189,7
+2189,7
@@
static long bpf_for_each_hash_elem(struct bpf_map *map, bpf_callback_t callback_
b = &htab->buckets[i];
rcu_read_lock();
head = &b->head;
- hlist_nulls_for_each_entry_
rcu
(elem, n, head, hash_node) {
+ hlist_nulls_for_each_entry_
safe
(elem, n, head, hash_node) {
key = elem->key;
if (is_percpu) {
/* current cpu value for percpu map */