summaryrefslogtreecommitdiff
path: root/sys/net/pfvar.h
diff options
context:
space:
mode:
authorAlexander Bluhm <bluhm@cvs.openbsd.org>2022-11-25 20:27:54 +0000
committerAlexander Bluhm <bluhm@cvs.openbsd.org>2022-11-25 20:27:54 +0000
commit30f04e646e5f539b2c42edf98b2f8b0a74018d52 (patch)
treed839d893f71cbcbc773d482fd7e9bb90d84fb4aa /sys/net/pfvar.h
parenta3124a7782db483f922c26905a69be0632679399 (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.h3
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 *);