get rid of NET_LOCK in the pf purge work
authordlg <dlg@openbsd.org>
Fri, 25 Nov 2022 03:45:39 +0000 (03:45 +0000)
committerdlg <dlg@openbsd.org>
Fri, 25 Nov 2022 03:45:39 +0000 (03:45 +0000)
commit635ac89356b68de9e5bb87000ac49d5c1af679c3
tree16197666c1c95369abff5b9e265d292ba4d1b750
parent2a4e68fdcb090411e732b9bfa93705e1d4740622
get rid of NET_LOCK in the pf purge work

pf purge was moved to systqmp (to get it away from KERNEL_LOCK)
which is also used as the backend for things like intr_barrier and
sched_barrier. it is common for network cards to call intr_barrier
while holding NET_LOCK, and if pf is trying to get the NET_LOCK in
the purge tasks that are now running in systqmp, it's a deadlock.
bluhm@ hit this exact issue.

sashan@ has been working to get rid of the need for NET_LOCK in pf,
so now we can remove the NET_LOCKs here rather than create a pf
specific taskq to run these tasks in.

ok sashan@ bluhm@
sys/net/pf.c