diff options
author | Alexander Bluhm <bluhm@cvs.openbsd.org> | 2022-11-25 20:27:54 +0000 |
---|---|---|
committer | Alexander Bluhm <bluhm@cvs.openbsd.org> | 2022-11-25 20:27:54 +0000 |
commit | 30f04e646e5f539b2c42edf98b2f8b0a74018d52 (patch) | |
tree | d839d893f71cbcbc773d482fd7e9bb90d84fb4aa /sys/net/pfvar.h | |
parent | a3124a7782db483f922c26905a69be0632679399 (diff) |
revert pf.c r1.1152 again: move pf_purge out from under the kernel lock
Using systqmp for pf_purge creates a deadlock between pf_purge()
and ixgbe_stop() and possibly other drivers. On systqmp pf(4) needs
netlock which the interface ioctl(2) is holding. ix(4) waits in
sched_barrier() which is also scheduled on the systqmp task queue.
Removing the netlock from pf_purge() as a quick fix caused other
problems.
backout suggested by deraadt@
Diffstat (limited to 'sys/net/pfvar.h')
-rw-r--r-- | sys/net/pfvar.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index deabd17741f..1023966b087 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pfvar.h,v 1.520 2022/11/11 16:12:08 dlg Exp $ */ +/* $OpenBSD: pfvar.h,v 1.521 2022/11/25 20:27:53 bluhm Exp $ */ /* * Copyright (c) 2001 Daniel Hartmeier @@ -1633,6 +1633,7 @@ extern void pf_tbladdr_remove(struct pf_addr_wrap *); extern void pf_tbladdr_copyout(struct pf_addr_wrap *); extern void pf_calc_skip_steps(struct pf_rulequeue *); extern void pf_purge_expired_src_nodes(void); +extern void pf_purge_expired_states(u_int32_t); extern void pf_purge_expired_rules(void); extern void pf_remove_state(struct pf_state *); extern void pf_remove_divert_state(struct pf_state_key *); |