Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F140042079
D29211.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D29211.diff
View Options
diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
--- a/sys/net/pfvar.h
+++ b/sys/net/pfvar.h
@@ -1390,6 +1390,8 @@
VNET_DECLARE(void *, pf_swi_cookie);
#define V_pf_swi_cookie VNET(pf_swi_cookie)
+VNET_DECLARE(struct intr_event *, pf_swi_ie);
+#define V_pf_swi_ie VNET(pf_swi_ie)
VNET_DECLARE(uint64_t, pf_stateid[MAXCPU]);
#define V_pf_stateid VNET(pf_stateid)
diff --git a/sys/netpfil/pf/if_pfsync.c b/sys/netpfil/pf/if_pfsync.c
--- a/sys/netpfil/pf/if_pfsync.c
+++ b/sys/netpfil/pf/if_pfsync.c
@@ -254,6 +254,8 @@
#define V_pfsyncif VNET(pfsyncif)
VNET_DEFINE_STATIC(void *, pfsync_swi_cookie) = NULL;
#define V_pfsync_swi_cookie VNET(pfsync_swi_cookie)
+VNET_DEFINE_STATIC(struct intr_event *, pfsync_swi_ie);
+#define V_pfsync_swi_ie VNET(pfsync_swi_ie)
VNET_DEFINE_STATIC(struct pfsyncstats, pfsyncstats);
#define V_pfsyncstats VNET(pfsyncstats)
VNET_DEFINE_STATIC(int, pfsync_carp_adj) = CARP_MAXSKEW;
@@ -2472,7 +2474,7 @@
V_pfsync_cloner = if_clone_simple(pfsyncname,
pfsync_clone_create, pfsync_clone_destroy, 1);
- error = swi_add(NULL, pfsyncname, pfsyncintr, V_pfsyncif,
+ error = swi_add(&V_pfsync_swi_ie, pfsyncname, pfsyncintr, V_pfsyncif,
SWI_NET, INTR_MPSAFE, &V_pfsync_swi_cookie);
if (error) {
if_clone_detach(V_pfsync_cloner);
@@ -2487,11 +2489,15 @@
static void
vnet_pfsync_uninit(const void *unused __unused)
{
+ int ret;
pfsync_pointers_uninit();
if_clone_detach(V_pfsync_cloner);
- swi_remove(V_pfsync_swi_cookie);
+ ret = swi_remove(V_pfsync_swi_cookie);
+ MPASS(ret == 0);
+ ret = intr_event_destroy(V_pfsync_swi_ie);
+ MPASS(ret == 0);
}
VNET_SYSUNINIT(vnet_pfsync_uninit, SI_SUB_PROTO_FIREWALL, SI_ORDER_FOURTH,
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -388,6 +388,7 @@
&pf_ioctl_maxcount, 0, "Maximum number of tables, addresses, ... in a single ioctl() call");
VNET_DEFINE(void *, pf_swi_cookie);
+VNET_DEFINE(struct intr_event *, pf_swi_ie);
VNET_DEFINE(uint32_t, pf_hashseed);
#define V_pf_hashseed VNET(pf_hashseed)
diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -331,7 +331,7 @@
for (int i = 0; i < SCNT_MAX; i++)
V_pf_status.scounters[i] = counter_u64_alloc(M_WAITOK);
- if (swi_add(NULL, "pf send", pf_intr, curvnet, SWI_NET,
+ if (swi_add(&V_pf_swi_ie, "pf send", pf_intr, curvnet, SWI_NET,
INTR_MPSAFE, &V_pf_swi_cookie) != 0)
/* XXXGL: leaked all above. */
return;
@@ -4670,6 +4670,7 @@
static void
pf_unload_vnet(void)
{
+ int ret;
V_pf_vnet_active = 0;
V_pf_status.running = 0;
@@ -4679,7 +4680,10 @@
shutdown_pf();
PF_RULES_WUNLOCK();
- swi_remove(V_pf_swi_cookie);
+ ret = swi_remove(V_pf_swi_cookie);
+ MPASS(ret == 0);
+ ret = intr_event_destroy(V_pf_swi_ie);
+ MPASS(ret == 0);
pf_unload_vnet_purge();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Dec 20, 10:47 AM (9 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27095776
Default Alt Text
D29211.diff (2 KB)
Attached To
Mode
D29211: pf: Fully remove interrupt events on vnet cleanup
Attached
Detach File
Event Timeline
Log In to Comment