aboutsummaryrefslogtreecommitdiffstats
path: root/lib/netdev-notifier-error-inject.c
diff options
context:
space:
mode:
authorHou Tao <[email protected]>2025-01-17 10:18:16 +0000
committerAlexei Starovoitov <[email protected]>2025-01-20 17:09:02 +0000
commit0a5d2efa382751fc2b0a9a82f6cbdfe8aef29fb3 (patch)
treea97c594da58593c690600d8153249f00390783d7 /lib/netdev-notifier-error-inject.c
parentbpf: Cancel the running bpf_timer through kworker for PREEMPT_RT (diff)
downloadkernel-0a5d2efa382751fc2b0a9a82f6cbdfe8aef29fb3.tar.gz
kernel-0a5d2efa382751fc2b0a9a82f6cbdfe8aef29fb3.zip
selftests/bpf: Add test case for the freeing of bpf_timer
The main purpose of the test is to demonstrate the lock problem for the free of bpf_timer under PREEMPT_RT. When freeing a bpf_timer which is running on other CPU in bpf_timer_cancel_and_free(), hrtimer_cancel() will try to acquire a spin-lock (namely softirq_expiry_lock), however the freeing procedure has already held a raw-spin-lock. The test first creates two threads: one to start timers and the other to free timers. The start-timers thread will start the timer and then wake up the free-timers thread to free these timers when the starts complete. After freeing, the free-timer thread will wake up the start-timer thread to complete the current iteration. A loop of 10 iterations is used. Signed-off-by: Hou Tao <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Alexei Starovoitov <[email protected]>
Diffstat (limited to 'lib/netdev-notifier-error-inject.c')
0 files changed, 0 insertions, 0 deletions