summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorKlemens Nanni <kn@cvs.openbsd.org>2023-06-28 15:36:09 +0000
committerKlemens Nanni <kn@cvs.openbsd.org>2023-06-28 15:36:09 +0000
commit4febab8c48f793876f5dcfb41fc64f2d8131a4f6 (patch)
treec127f8584268ac3978700f028a12d8fdcf960f68 /sys
parentdbdd7fcb25fddf654e40d7f368c42f60e96f1bf5 (diff)
Revert r1.406 "Close all pf transactions before opening a new one in DIOCGETRULES."
regress/sbin/pfctl panics with "rw_enter: pfioctl_rw locking against myself" as reported by bluhm on bugs@.
Diffstat (limited to 'sys')
-rw-r--r--sys/net/pf_ioctl.c17
1 files changed, 1 insertions, 16 deletions
diff --git a/sys/net/pf_ioctl.c b/sys/net/pf_ioctl.c
index 26e1fa07faf..cfcb0c1e4f3 100644
--- a/sys/net/pf_ioctl.c
+++ b/sys/net/pf_ioctl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pf_ioctl.c,v 1.408 2023/06/27 17:36:56 kn Exp $ */
+/* $OpenBSD: pf_ioctl.c,v 1.409 2023/06/28 15:36:08 kn Exp $ */
/*
* Copyright (c) 2001 Daniel Hartmeier
@@ -118,7 +118,6 @@ int pf_states_clr(struct pfioc_state_kill *);
int pf_states_get(struct pfioc_states *);
struct pf_trans *pf_open_trans(uint32_t);
-void pf_close_all_trans(uint32_t);
struct pf_trans *pf_find_trans(uint32_t, uint64_t);
void pf_free_trans(struct pf_trans *);
void pf_rollback_trans(struct pf_trans *);
@@ -1492,7 +1491,6 @@ pfioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct proc *p)
PF_UNLOCK();
NET_UNLOCK();
- pf_close_all_trans(minor(dev));
t = pf_open_trans(minor(dev));
pf_init_tgetrule(t, ruleset->anchor, ruleset_version, rule);
pr->ticket = t->pft_ticket;
@@ -3271,19 +3269,6 @@ pf_open_trans(uint32_t unit)
return (t);
}
-void
-pf_close_all_trans(uint32_t unit)
-{
- struct pf_trans *t, *nt;
-
- rw_assert_wrlock(&pfioctl_rw);
-
- LIST_FOREACH_SAFE(t, &pf_ioctl_trans, pft_entry, nt) {
- if (t->pft_unit == unit)
- pf_rollback_trans(t);
- }
-}
-
struct pf_trans *
pf_find_trans(uint32_t unit, uint64_t ticket)
{