Small change to allow non-sleepable global subprogs in RCU, preempt-disabled, and irq-disabled sections. For now, we don't lift the limitation for locks as it requires more analysis, and will do this one resilient spin locks land. This surfaced a bug where sleepable global subprogs were allowed in RCU read sections, that has been fixed. Tests have been added to cover various cases. Changelog: ---------- v1 -> v2 v1: https://lore.kernel.org/bpf/20250228162858.1073529-1-memxor@xxxxxxxxx * Rename subprog_info[i].sleepable to might_sleep, which more accurately reflects the nature of the bit. 'sleepable' means whether a given context is allowed to, while might_sleep captures if it does. * Disallow extensions that might sleep to attach to targets that don't sleep, since they'd be permitted to be called in atomic contexts. (Eduard) * Add tests for mixing non-sleepable and sleepable global function calls, and extensions attaching to non-sleepable global functions. (Eduard) * Rename changes_pkt_data -> summarization Kumar Kartikeya Dwivedi (3): bpf: Summarize sleepable global subprogs selftests/bpf: Test sleepable global subprogs in atomic contexts selftests/bpf: Add tests for extending sleepable global subprogs include/linux/bpf.h | 1 + include/linux/bpf_verifier.h | 1 + kernel/bpf/verifier.c | 62 ++++++-- .../bpf/prog_tests/changes_pkt_data.c | 107 ------------- .../selftests/bpf/prog_tests/rcu_read_lock.c | 3 + .../selftests/bpf/prog_tests/spin_lock.c | 3 + .../selftests/bpf/prog_tests/summarization.c | 143 ++++++++++++++++++ tools/testing/selftests/bpf/progs/irq.c | 71 ++++++++- .../selftests/bpf/progs/preempt_lock.c | 68 ++++++++- .../selftests/bpf/progs/rcu_read_lock.c | 58 +++++++ .../{changes_pkt_data.c => summarization.c} | 38 ++++- ...ta_freplace.c => summarization_freplace.c} | 13 ++ .../selftests/bpf/progs/test_spin_lock_fail.c | 69 +++++++++ 13 files changed, 513 insertions(+), 124 deletions(-) delete mode 100644 tools/testing/selftests/bpf/prog_tests/changes_pkt_data.c create mode 100644 tools/testing/selftests/bpf/prog_tests/summarization.c rename tools/testing/selftests/bpf/progs/{changes_pkt_data.c => summarization.c} (52%) rename tools/testing/selftests/bpf/progs/{changes_pkt_data_freplace.c => summarization_freplace.c} (66%) base-commit: 0b9363131daf4227d5ae11ee677acdcfff06e938 -- 2.43.5