aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2022-01-03 18:15:22 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2022-01-03 18:15:22 +0000
commit644ca0846da3492bf286201fd9a81659d044f589 (patch)
treecd63efd39508d603255eefb4b255cd25d92e54dc
parent24e1c6ae7d3f7731a0884a62e9d5273e5ca1335a (diff)
downloadsrc-644ca0846da3492bf286201fd9a81659d044f589.tar.gz
src-644ca0846da3492bf286201fd9a81659d044f589.zip
domains: make domain_init() initialize only global state
Now that each module handles its global and VNET initialization itself, there is no VNET related stuff left to do in domain_init(). Differential revision: https://reviews.freebsd.org/D33541
-rw-r--r--sys/dev/hyperv/hvsock/hv_sock.c2
-rw-r--r--sys/kern/uipc_domain.c52
-rw-r--r--sys/net/rtsock.c2
-rw-r--r--sys/netgraph/bluetooth/socket/ng_btsocket.c2
-rw-r--r--sys/netgraph/ng_socket.c2
-rw-r--r--sys/netinet/in_proto.c2
-rw-r--r--sys/netinet6/in6_proto.c2
-rw-r--r--sys/sys/domain.h13
8 files changed, 18 insertions, 59 deletions
diff --git a/sys/dev/hyperv/hvsock/hv_sock.c b/sys/dev/hyperv/hvsock/hv_sock.c
index b2a84befafa2..4bd98d154cbf 100644
--- a/sys/dev/hyperv/hvsock/hv_sock.c
+++ b/sys/dev/hyperv/hvsock/hv_sock.c
@@ -130,7 +130,7 @@ static struct domain hv_socket_domain = {
.dom_protoswNPROTOSW = &hv_socket_protosw[nitems(hv_socket_protosw)]
};
-VNET_DOMAIN_SET(hv_socket_);
+DOMAIN_SET(hv_socket_);
#define MAX_PORT ((uint32_t)0xFFFFFFFF)
#define MIN_PORT ((uint32_t)0x0)
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index 832db9f6e667..dc4a1541319c 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -183,29 +183,21 @@ domain_init(void *arg)
struct protosw *pr;
int flags;
+ MPASS(IS_DEFAULT_VNET(curvnet));
+
flags = atomic_load_acq_int(&dp->dom_flags);
if ((flags & DOMF_SUPPORTED) == 0)
return;
- KASSERT((flags & DOMF_INITED) == 0 || !IS_DEFAULT_VNET(curvnet),
- ("Premature initialization of domain in non-default vnet"));
+ MPASS((flags & DOMF_INITED) == 0);
+
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
- /*
- * Note that with VIMAGE enabled, domain_init() will be
- * re-invoked for each new vnet that's created. The below lists
- * are intended to be system-wide, so avoid altering global
- * state for non-default vnets.
- */
- if (IS_DEFAULT_VNET(curvnet)) {
- pr_usrreqs_init(pr);
- rm_wlock(&pftimo_lock);
- if (pr->pr_fasttimo != NULL)
- LIST_INSERT_HEAD(&pffast_list, pr,
- pr_fasttimos);
- if (pr->pr_slowtimo != NULL)
- LIST_INSERT_HEAD(&pfslow_list, pr,
- pr_slowtimos);
- rm_wunlock(&pftimo_lock);
- }
+ pr_usrreqs_init(pr);
+ rm_wlock(&pftimo_lock);
+ if (pr->pr_fasttimo != NULL)
+ LIST_INSERT_HEAD(&pffast_list, pr, pr_fasttimos);
+ if (pr->pr_slowtimo != NULL)
+ LIST_INSERT_HEAD(&pfslow_list, pr, pr_slowtimos);
+ rm_wunlock(&pftimo_lock);
}
/*
@@ -215,29 +207,9 @@ domain_init(void *arg)
max_datalen = MHLEN - max_hdr;
if (max_datalen < 1)
panic("%s: max_datalen < 1", __func__);
- if (IS_DEFAULT_VNET(curvnet))
- atomic_set_rel_int(&dp->dom_flags, DOMF_INITED);
-}
-
-#ifdef VIMAGE
-void
-vnet_domain_init(void *arg)
-{
-
- /* Virtualized case is no different -- call init functions. */
- domain_init(arg);
+ atomic_set_rel_int(&dp->dom_flags, DOMF_INITED);
}
-void
-vnet_domain_uninit(void *arg)
-{
- struct domain *dp = arg;
-
- if ((atomic_load_acq_int(&dp->dom_flags) & DOMF_SUPPORTED) == 0)
- return;
-}
-#endif
-
/*
* Add a new protocol domain to the list of supported domains
* Note: you cant unload it again because a socket may be using it.
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index 7c4ff01e5e73..9ab07b374ea2 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -2702,4 +2702,4 @@ static struct domain routedomain = {
.dom_protoswNPROTOSW = &routesw[nitems(routesw)]
};
-VNET_DOMAIN_SET(route);
+DOMAIN_SET(route);
diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket.c b/sys/netgraph/bluetooth/socket/ng_btsocket.c
index 93866ce79d6c..416f07a670c6 100644
--- a/sys/netgraph/bluetooth/socket/ng_btsocket.c
+++ b/sys/netgraph/bluetooth/socket/ng_btsocket.c
@@ -287,4 +287,4 @@ ng_btsocket_modevent(module_t mod, int event, void *data)
return (error);
} /* ng_btsocket_modevent */
-VNET_DOMAIN_SET(ng_btsocket_);
+DOMAIN_SET(ng_btsocket_);
diff --git a/sys/netgraph/ng_socket.c b/sys/netgraph/ng_socket.c
index 05f37579aba1..d8a7d2f3701f 100644
--- a/sys/netgraph/ng_socket.c
+++ b/sys/netgraph/ng_socket.c
@@ -1223,7 +1223,7 @@ ngs_mod_event(module_t mod, int event, void *data)
return (error);
}
-VNET_DOMAIN_SET(ng);
+DOMAIN_SET(ng);
SYSCTL_INT(_net_graph, OID_AUTO, family, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, AF_NETGRAPH, "");
static SYSCTL_NODE(_net_graph, OID_AUTO, data, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
diff --git a/sys/netinet/in_proto.c b/sys/netinet/in_proto.c
index 035051c6f5da..b9f506518cce 100644
--- a/sys/netinet/in_proto.c
+++ b/sys/netinet/in_proto.c
@@ -302,7 +302,7 @@ struct domain inetdomain = {
.dom_ifdetach = in_domifdetach
};
-VNET_DOMAIN_SET(inet);
+DOMAIN_SET(inet);
#endif /* INET */
SYSCTL_NODE(_net, PF_INET, inet, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
diff --git a/sys/netinet6/in6_proto.c b/sys/netinet6/in6_proto.c
index 44eb0fa4ee62..6ccd90ac6fdd 100644
--- a/sys/netinet6/in6_proto.c
+++ b/sys/netinet6/in6_proto.c
@@ -345,7 +345,7 @@ struct domain inet6domain = {
.dom_ifmtu = in6_domifmtu
};
-VNET_DOMAIN_SET(inet6);
+DOMAIN_SET(inet6);
/*
* Internet configuration info
diff --git a/sys/sys/domain.h b/sys/sys/domain.h
index c9defe8e4341..409372e91915 100644
--- a/sys/sys/domain.h
+++ b/sys/sys/domain.h
@@ -87,19 +87,6 @@ void vnet_domain_uninit(void *);
SI_ORDER_FIRST, domain_add, & name ## domain); \
SYSINIT(domain_init_ ## name, SI_SUB_PROTO_DOMAIN, \
SI_ORDER_SECOND, domain_init, & name ## domain);
-#ifdef VIMAGE
-#define VNET_DOMAIN_SET(name) \
- SYSINIT(domain_add_ ## name, SI_SUB_PROTO_DOMAIN, \
- SI_ORDER_FIRST, domain_add, & name ## domain); \
- VNET_SYSINIT(vnet_domain_init_ ## name, SI_SUB_PROTO_DOMAIN, \
- SI_ORDER_SECOND, vnet_domain_init, & name ## domain); \
- VNET_SYSUNINIT(vnet_domain_uninit_ ## name, \
- SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND, vnet_domain_uninit, \
- & name ## domain)
-#else /* !VIMAGE */
-#define VNET_DOMAIN_SET(name) DOMAIN_SET(name)
-#endif /* VIMAGE */
-
#endif /* _KERNEL */
#endif /* !_SYS_DOMAIN_H_ */