Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jul 2022 19:21:46 GMT
From:      Kristof Provost <kp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 150486f6a940 - main - Introduce and use the NET_EPOCH_DRAIN_CALLBACKS() macro
Message-ID:  <202207291921.26TJLkU2079866@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=150486f6a940947fa7a7c6db357c3f92d07a955f

commit 150486f6a940947fa7a7c6db357c3f92d07a955f
Author:     Zhenlei Huang <zlei.huang@gmail.com>
AuthorDate: 2022-07-29 13:02:39 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2022-07-29 19:21:10 +0000

    Introduce and use the NET_EPOCH_DRAIN_CALLBACKS() macro
    
    Reviewed by:    melifao, kp
    Differential Revision:  https://reviews.freebsd.org/D35968
---
 sys/net/if.c                 | 4 ++--
 sys/net/if_bridge.c          | 2 +-
 sys/net/route/fib_algo.c     | 2 +-
 sys/net/route/route_tables.c | 2 +-
 sys/netpfil/pf/pf_ioctl.c    | 2 +-
 sys/sys/epoch.h              | 1 +
 6 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/sys/net/if.c b/sys/net/if.c
index 8f463d0bfa58..24a97329d232 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -1143,7 +1143,7 @@ if_detach_internal(struct ifnet *ifp, bool vmove)
 	 * which lead to leave group calls, which in turn access the
 	 * belonging ifnet structure:
 	 */
-	epoch_drain_callbacks(net_epoch_preempt);
+	NET_EPOCH_DRAIN_CALLBACKS();
 
 	/*
 	 * In any case (destroy or vmove) detach us from the groups
@@ -4206,7 +4206,7 @@ if_deregister_com_alloc(u_char type)
 	 * fixes issues about late invocation of if_destroy(), which leads
 	 * to memory leak from if_com_alloc[type] allocated if_l2com.
 	 */
-	epoch_drain_callbacks(net_epoch_preempt);
+	NET_EPOCH_DRAIN_CALLBACKS();
 
 	if_com_alloc[type] = NULL;
 	if_com_free[type] = NULL;
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c
index 39085fa440e8..664a1f885a46 100644
--- a/sys/net/if_bridge.c
+++ b/sys/net/if_bridge.c
@@ -600,7 +600,7 @@ vnet_bridge_uninit(const void *unused __unused)
 	BRIDGE_LIST_LOCK_DESTROY();
 
 	/* Callbacks may use the UMA zone. */
-	epoch_drain_callbacks(net_epoch_preempt);
+	NET_EPOCH_DRAIN_CALLBACKS();
 
 	uma_zdestroy(V_bridge_rtnode_zone);
 }
diff --git a/sys/net/route/fib_algo.c b/sys/net/route/fib_algo.c
index 54b0464711a5..42ad3f43d9cf 100644
--- a/sys/net/route/fib_algo.c
+++ b/sys/net/route/fib_algo.c
@@ -1509,7 +1509,7 @@ set_fib_algo(uint32_t fibnum, int family, struct sysctl_oid *oidp, struct sysctl
 	fib_cleanup_algo(rh, true, false);
 
 	/* Drain cb so user can unload the module after userret if so desired */
-	epoch_drain_callbacks(net_epoch_preempt);
+	NET_EPOCH_DRAIN_CALLBACKS();
 
 	return (0);
 }
diff --git a/sys/net/route/route_tables.c b/sys/net/route/route_tables.c
index c9a9d6a915eb..54b467f9801f 100644
--- a/sys/net/route/route_tables.c
+++ b/sys/net/route/route_tables.c
@@ -299,7 +299,7 @@ rtables_destroy(const void *unused __unused)
 	 *  nexthops deletions will be scheduled for the next epoch run
 	 *  and will be completed after vnet teardown.
 	 */
-	epoch_drain_callbacks(net_epoch_preempt);
+	NET_EPOCH_DRAIN_CALLBACKS();
 
 	free(V_rt_tables, M_RTABLE);
 	vnet_rtzone_destroy();
diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
index 3108536b58ab..696ae4d0de70 100644
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -5186,7 +5186,7 @@ DIOCCHANGEADDR_error:
 			break;
 		}
 		/* Ensure there's no more ethernet rules to clean up. */
-		epoch_drain_callbacks(net_epoch_preempt);
+		NET_EPOCH_DRAIN_CALLBACKS();
 		PF_RULES_WLOCK();
 		for (i = 0, ioe = ioes; i < io->size; i++, ioe++) {
 			ioe->anchor[sizeof(ioe->anchor) - 1] = '\0';
diff --git a/sys/sys/epoch.h b/sys/sys/epoch.h
index 7b06ee19c2f3..10ca9a6e5c7d 100644
--- a/sys/sys/epoch.h
+++ b/sys/sys/epoch.h
@@ -109,6 +109,7 @@ extern epoch_t net_epoch_preempt;
 #define	NET_EPOCH_EXIT(et)	epoch_exit_preempt(net_epoch_preempt, &(et))
 #define	NET_EPOCH_WAIT()	epoch_wait_preempt(net_epoch_preempt)
 #define	NET_EPOCH_CALL(f, c)	epoch_call(net_epoch_preempt, (f), (c))
+#define	NET_EPOCH_DRAIN_CALLBACKS() epoch_drain_callbacks(net_epoch_preempt)
 #define	NET_EPOCH_ASSERT()	MPASS(in_epoch(net_epoch_preempt))
 #define	NET_TASK_INIT(t, p, f, c) TASK_INIT_FLAGS(t, p, f, c, TASK_NETWORK)
 #define	NET_GROUPTASK_INIT(gtask, prio, func, ctx)			\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202207291921.26TJLkU2079866>