BPF List
 help / color / mirror / Atom feed
* [PATCH v2 0/2] bpf: Allow bpf_for/bpf_repeat while holding spin
@ 2025-01-04 20:25 Emil Tsalapatis
  2025-01-04 20:25 ` [PATCH v2 1/2] bpf: Allow bpf_for/bpf_repeat calls while holding a spinlock Emil Tsalapatis
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Emil Tsalapatis @ 2025-01-04 20:25 UTC (permalink / raw)
  To: bpf; +Cc: ast, daniel, andrii, eddyz87, Emil Tsalapatis

From: Emil Tsalapatis (Meta) <emil@etsalapatis.com>

In BPF programs, kfunc calls while holding a lock are not allowed
because kfuncs may sleep by default. The exception to this rule are the
functions in special_kfunc_list, which are guaranteed to not sleep. The
bpf_iter_num_* functions used by the bpf_for and bpf_repeat macros make
no function calls themselves, and as such are guaranteed to not sleep.
Add them to special_kfunc_list to allow them within BPF spinlock
critical sections.

Signed-off-by: Emil Tsalapatis (Meta) <emil@etsalapatis.com>

Emil Tsalapatis (2):
  bpf: Allow bpf_for/bpf_repeat calls while holding a spinlock
  selftests/bpf: test bpf_for within spin lock section

 kernel/bpf/verifier.c                         | 20 +++++++++++++-
 .../selftests/bpf/progs/verifier_spin_lock.c  | 26 +++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)

-- 
2.47.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-01-06 19:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-04 20:25 [PATCH v2 0/2] bpf: Allow bpf_for/bpf_repeat while holding spin Emil Tsalapatis
2025-01-04 20:25 ` [PATCH v2 1/2] bpf: Allow bpf_for/bpf_repeat calls while holding a spinlock Emil Tsalapatis
2025-01-04 20:25 ` [PATCH v2 2/2] selftests/bpf: test bpf_for within spin lock section Emil Tsalapatis
2025-01-06 19:10 ` [PATCH v2 0/2] bpf: Allow bpf_for/bpf_repeat while holding spin patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox