summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/ip.h2
-rw-r--r--net/ipv4/af_inet.c4
-rw-r--r--net/ipv4/sysctl_net_ipv4.c7
3 files changed, 13 insertions, 0 deletions
diff --git a/include/net/ip.h b/include/net/ip.h
index b5862b97520..250e6ef025a 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -188,6 +188,8 @@ extern int sysctl_ip_dynaddr;
extern void ipfrag_init(void);
+extern void ip_static_sysctl_init(void);
+
#ifdef CONFIG_INET
#include <net/dst.h>
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index f440a9f5492..354f6b54e49 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1439,6 +1439,10 @@ static int __init inet_init(void)
(void)sock_register(&inet_family_ops);
+#ifdef CONFIG_SYSCTL
+ ip_static_sysctl_init();
+#endif
+
/*
* Add all the base protocols.
*/
diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
index 14ef202a225..d63e9388d92 100644
--- a/net/ipv4/sysctl_net_ipv4.c
+++ b/net/ipv4/sysctl_net_ipv4.c
@@ -882,4 +882,11 @@ static __init int sysctl_ipv4_init(void)
return 0;
}
+/* set enough of tree skeleton to get rid of ordering problems */
+void __init ip_static_sysctl_init(void)
+{
+ static ctl_table table[1];
+ register_sysctl_paths(net_ipv4_ctl_path, table);
+}
+
__initcall(sysctl_ipv4_init);