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.
This commit is contained in:
Kristof Provost 2018-11-02 17:05:40 +00:00
parent dde6e1fecb
commit 14624ab582
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=340073

View File

@ -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;
@ -849,6 +853,8 @@ pfi_detach_ifnet_event(void *arg __unused, struct ifnet *ifp)
V_pfi_update++;
pfi_kif_update(kif);
if_rele(kif->pfik_ifp);
kif->pfik_ifp = NULL;
ifp->if_pf_kif = NULL;
#ifdef ALTQ