Page MenuHomeFreeBSD

D37569.diff
No OneTemporary

D37569.diff

diff --git a/sys/net/if.c b/sys/net/if.c
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -1545,14 +1545,13 @@
IFNET_WUNLOCK();
epoch_wait_preempt(net_epoch_preempt);
+ EVENTHANDLER_INVOKE(group_change_event, groupname);
if (freeifgl) {
EVENTHANDLER_INVOKE(group_detach_event, ifgl->ifgl_group);
free(ifgl->ifgl_group, M_TEMP);
}
free(ifgm, M_TEMP);
free(ifgl, M_TEMP);
-
- EVENTHANDLER_INVOKE(group_change_event, groupname);
}
/*
diff --git a/sys/netpfil/pf/pf_if.c b/sys/netpfil/pf/pf_if.c
--- a/sys/netpfil/pf/pf_if.c
+++ b/sys/netpfil/pf/pf_if.c
@@ -364,14 +364,11 @@
kif->pfik_rulerefs++;
}
-void
-pfi_kkif_unref(struct pfi_kkif *kif)
+static void
+pfi_kkif_remove_if_unref(struct pfi_kkif *kif)
{
PF_RULES_WASSERT();
- KASSERT(kif->pfik_rulerefs > 0, ("%s: %p has zero refs", __func__, kif));
-
- kif->pfik_rulerefs--;
if (kif->pfik_rulerefs > 0)
return;
@@ -391,6 +388,18 @@
mtx_unlock(&pfi_unlnkdkifs_mtx);
}
+void
+pfi_kkif_unref(struct pfi_kkif *kif)
+{
+
+ PF_RULES_WASSERT();
+ KASSERT(kif->pfik_rulerefs > 0, ("%s: %p has zero refs", __func__, kif));
+
+ kif->pfik_rulerefs--;
+
+ pfi_kkif_remove_if_unref(kif);
+}
+
void
pfi_kkif_purge(void)
{
@@ -1039,6 +1048,8 @@
#ifdef ALTQ
pf_altq_ifnet_event(ifp, 1);
#endif
+ pfi_kkif_remove_if_unref(kif);
+
PF_RULES_WUNLOCK();
NET_EPOCH_EXIT(et);
}
@@ -1099,6 +1110,8 @@
kif->pfik_group = NULL;
ifg->ifg_pf_kif = NULL;
+
+ pfi_kkif_remove_if_unref(kif);
PF_RULES_WUNLOCK();
}

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 30, 12:38 PM (4 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13182874
Default Alt Text
D37569.diff (1 KB)

Event Timeline