svn commit: r340073 - head/sys/netpfil/pf
Kristof Provost
kp at FreeBSD.org
Fri Nov 2 17:05:42 UTC 2018
Author: kp
Date: Fri Nov 2 17:05:40 2018
New Revision: 340073
URL: https://svnweb.freebsd.org/changeset/base/340073
Log:
pf: Keep a reference to struct ifnets we're using
Ensure that the struct ifnet we use can't go away until we're done with
it.
Modified:
head/sys/netpfil/pf/pf_if.c
Modified: head/sys/netpfil/pf/pf_if.c
==============================================================================
--- head/sys/netpfil/pf/pf_if.c Fri Nov 2 17:03:53 2018 (r340072)
+++ head/sys/netpfil/pf/pf_if.c Fri Nov 2 17:05:40 2018 (r340073)
@@ -165,8 +165,10 @@ pfi_cleanup_vnet(void)
RB_REMOVE(pfi_ifhead, &V_pfi_ifs, kif);
if (kif->pfik_group)
kif->pfik_group->ifg_pf_kif = NULL;
- if (kif->pfik_ifp)
+ if (kif->pfik_ifp) {
+ if_rele(kif->pfik_ifp);
kif->pfik_ifp->if_pf_kif = NULL;
+ }
free(kif, PFI_MTYPE);
}
@@ -322,6 +324,8 @@ pfi_attach_ifnet(struct ifnet *ifp)
V_pfi_update++;
kif = pfi_kif_attach(kif, ifp->if_xname);
+ if_ref(ifp);
+
kif->pfik_ifp = ifp;
ifp->if_pf_kif = kif;
@@ -848,6 +852,8 @@ pfi_detach_ifnet_event(void *arg __unused, struct ifne
PF_RULES_WLOCK();
V_pfi_update++;
pfi_kif_update(kif);
+
+ if_rele(kif->pfik_ifp);
kif->pfik_ifp = NULL;
ifp->if_pf_kif = NULL;
More information about the svn-src-all
mailing list