diff options
author | Klemens Nanni <kn@cvs.openbsd.org> | 2023-06-28 15:36:09 +0000 |
---|---|---|
committer | Klemens Nanni <kn@cvs.openbsd.org> | 2023-06-28 15:36:09 +0000 |
commit | 4febab8c48f793876f5dcfb41fc64f2d8131a4f6 (patch) | |
tree | c127f8584268ac3978700f028a12d8fdcf960f68 /sys/net/pf_ioctl.c | |
parent | dbdd7fcb25fddf654e40d7f368c42f60e96f1bf5 (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/net/pf_ioctl.c')
-rw-r--r-- | sys/net/pf_ioctl.c | 17 |
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) { |