Commit 75673fda authored by Brandon Kammerdiener's avatar Brandon Kammerdiener Committed by Alexei Starovoitov
Browse files

bpf: fix possible endless loop in BPF map iteration



The _safe variant used here gets the next element before running the callback,
avoiding the endless loop condition.

Signed-off-by: default avatarBrandon Kammerdiener <brandon.kammerdiener@intel.com>
Link: https://lore.kernel.org/r/20250424153246.141677-2-brandon.kammerdiener@intel.com


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarHou Tao <houtao1@huawei.com>
parent f2858f30
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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 */