ovpn_tcp_init initializes the TCP proto and proto_ops templates used
when a TCP socket is attached to an ovpn peer but ovpn_init registers
the rtnl link ops and generic netlink family before initializing those
templates. Once either interface is visible, userspace can create an
ovpn device and configure a TCP socket while the TCP templates are still
zero-initialized.
Initialize the TCP templates before publishing the rtnl and netlink
interfaces, so externally reachable setup paths can only observe
initialized TCP state.
Fixes: 11851cbd60ea ("ovpn: implement TCP transport")
Signed-off-by: Ralf Lici <[email protected]>
---
New patch added in v5.
drivers/net/ovpn/main.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ovpn/main.c b/drivers/net/ovpn/main.c
index 9993c1dfe471..c2c3af0c3c55 100644
--- a/drivers/net/ovpn/main.c
+++ b/drivers/net/ovpn/main.c
@@ -233,8 +233,14 @@ static struct rtnl_link_ops ovpn_link_ops = {
static int __init ovpn_init(void)
{
- int err = rtnl_link_register(&ovpn_link_ops);
+ int err;
+ /* initialize the TCP protos before the module is exposed through rtnl
+ * or netlink
+ */
+ ovpn_tcp_init();
+
+ err = rtnl_link_register(&ovpn_link_ops);
if (err) {
pr_err("ovpn: can't register rtnl link ops: %d\n", err);
return err;
@@ -246,8 +252,6 @@ static int __init ovpn_init(void)
goto unreg_rtnl;
}
- ovpn_tcp_init();
-
return 0;
unreg_rtnl:
--
2.55.0
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel