From cd5f1210341245faa2cd1b8742b5c1fa37984762 Mon Sep 17 00:00:00 2001 From: kn Date: Wed, 28 Jun 2023 15:36:08 +0000 Subject: [PATCH] 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@. --- sys/net/pf_ioctl.c | 17 +---------------- 1 file changed, 1 insertion(+), 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) { -- 2.20.1