Hi, This patchset fixes an endless loop condition that can occur in bpf_for_each_hash_elem, causing the core to softlock. My understanding is that a combination of RCU list deletion and insertion introduces the new element after the iteration cursor and that there is a chance that an RCU reader may in fact use this new element in iteration. The patch uses a _safe variant of the macro which gets the next element to iterate before executing the loop body for the current element. I have also added a subtest in the for_each selftest that can trigger this condition without the fix. Changes since v2: - Renaming and additional checks in selftests/bpf/prog_tests/for_each.c Changes since v1: - Added missing Signed-off-by lines to both patches Thanks, Brandon Kammerdiener Brandon Kammerdiener (2): bpf: fix possible endless loop in BPF map iteration selftests/bpf: add test for softlock when modifying hashmap while iterating kernel/bpf/hashtab.c | 2 +- .../selftests/bpf/prog_tests/for_each.c | 37 +++++++++++++++++++ .../bpf/progs/for_each_hash_modify.c | 30 +++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/bpf/progs/for_each_hash_modify.c -- 2.49.0