diff options
author | Zhenlei Huang <zlei.huang@gmail.com> | 2022-07-29 13:02:39 +0000 |
---|---|---|
committer | Zhenlei Huang <zlei@FreeBSD.org> | 2023-01-11 10:35:59 +0000 |
commit | 9383a51afd805181e671254a95fc74a51fa7e0f4 (patch) | |
tree | f70917fbe60427dc312821841ce9ffec1823c7c9 | |
parent | 310f6f2448ed5baf0d74fba7660468df84dce184 (diff) | |
download | src-9383a51afd805181e671254a95fc74a51fa7e0f4.tar.gz src-9383a51afd805181e671254a95fc74a51fa7e0f4.zip |
Introduce and use the NET_EPOCH_DRAIN_CALLBACKS() macro
Reviewed by: melifao, kp
Approved by: kp (mentor)
Differential Revision: https://reviews.freebsd.org/D35968
(cherry picked from commit 150486f6a940947fa7a7c6db357c3f92d07a955f)
-rw-r--r-- | sys/net/if.c | 4 | ||||
-rw-r--r-- | sys/net/if_bridge.c | 2 | ||||
-rw-r--r-- | sys/net/route/fib_algo.c | 2 | ||||
-rw-r--r-- | sys/net/route/route_tables.c | 2 | ||||
-rw-r--r-- | sys/sys/epoch.h | 1 |
5 files changed, 6 insertions, 5 deletions
diff --git a/sys/net/if.c b/sys/net/if.c index 38e1ebbb61b7..bcebd84306c8 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1182,7 +1182,7 @@ if_detach_internal(struct ifnet *ifp, int vmove, struct if_clone **ifcp) * 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 @@ -4083,7 +4083,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 0473245a1abd..e46c7fb92793 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/sys/epoch.h b/sys/sys/epoch.h index 85c791d3df6c..63e03cafd985 100644 --- a/sys/sys/epoch.h +++ b/sys/sys/epoch.h @@ -104,6 +104,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) \ |