aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/af_inet.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/af_inet.c')
-rw-r--r--net/ipv4/af_inet.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 3090a9307c46..776ed3199b52 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -115,8 +115,6 @@
115#include <linux/mroute.h> 115#include <linux/mroute.h>
116#endif 116#endif
117 117
118DEFINE_SNMP_STAT(struct linux_mib, net_statistics) __read_mostly;
119
120extern void ip_mc_drop_socket(struct sock *sk); 118extern void ip_mc_drop_socket(struct sock *sk);
121 119
122/* The inetsw table contains everything that inet_create needs to 120/* The inetsw table contains everything that inet_create needs to
@@ -1348,10 +1346,15 @@ static __net_init int ipv4_mib_init_net(struct net *net)
1348 if (snmp_mib_init((void **)net->mib.ip_statistics, 1346 if (snmp_mib_init((void **)net->mib.ip_statistics,
1349 sizeof(struct ipstats_mib)) < 0) 1347 sizeof(struct ipstats_mib)) < 0)
1350 goto err_ip_mib; 1348 goto err_ip_mib;
1349 if (snmp_mib_init((void **)net->mib.net_statistics,
1350 sizeof(struct linux_mib)) < 0)
1351 goto err_net_mib;
1351 1352
1352 tcp_mib_init(net); 1353 tcp_mib_init(net);
1353 return 0; 1354 return 0;
1354 1355
1356err_net_mib:
1357 snmp_mib_free((void **)net->mib.ip_statistics);
1355err_ip_mib: 1358err_ip_mib:
1356 snmp_mib_free((void **)net->mib.tcp_statistics); 1359 snmp_mib_free((void **)net->mib.tcp_statistics);
1357err_tcp_mib: 1360err_tcp_mib:
@@ -1360,6 +1363,7 @@ err_tcp_mib:
1360 1363
1361static __net_exit void ipv4_mib_exit_net(struct net *net) 1364static __net_exit void ipv4_mib_exit_net(struct net *net)
1362{ 1365{
1366 snmp_mib_free((void **)net->mib.net_statistics);
1363 snmp_mib_free((void **)net->mib.ip_statistics); 1367 snmp_mib_free((void **)net->mib.ip_statistics);
1364 snmp_mib_free((void **)net->mib.tcp_statistics); 1368 snmp_mib_free((void **)net->mib.tcp_statistics);
1365} 1369}
@@ -1371,9 +1375,6 @@ static __net_initdata struct pernet_operations ipv4_mib_ops = {
1371 1375
1372static int __init init_ipv4_mibs(void) 1376static int __init init_ipv4_mibs(void)
1373{ 1377{
1374 if (snmp_mib_init((void **)net_statistics,
1375 sizeof(struct linux_mib)) < 0)
1376 goto err_net_mib;
1377 if (snmp_mib_init((void **)icmp_statistics, 1378 if (snmp_mib_init((void **)icmp_statistics,
1378 sizeof(struct icmp_mib)) < 0) 1379 sizeof(struct icmp_mib)) < 0)
1379 goto err_icmp_mib; 1380 goto err_icmp_mib;
@@ -1401,8 +1402,6 @@ err_udp_mib:
1401err_icmpmsg_mib: 1402err_icmpmsg_mib:
1402 snmp_mib_free((void **)icmp_statistics); 1403 snmp_mib_free((void **)icmp_statistics);
1403err_icmp_mib: 1404err_icmp_mib:
1404 snmp_mib_free((void **)net_statistics);
1405err_net_mib:
1406 return -ENOMEM; 1405 return -ENOMEM;
1407} 1406}
1408 1407
@@ -1582,5 +1581,4 @@ EXPORT_SYMBOL(inet_sock_destruct);
1582EXPORT_SYMBOL(inet_stream_connect); 1581EXPORT_SYMBOL(inet_stream_connect);
1583EXPORT_SYMBOL(inet_stream_ops); 1582EXPORT_SYMBOL(inet_stream_ops);
1584EXPORT_SYMBOL(inet_unregister_protosw); 1583EXPORT_SYMBOL(inet_unregister_protosw);
1585EXPORT_SYMBOL(net_statistics);
1586EXPORT_SYMBOL(sysctl_ip_nonlocal_bind); 1584EXPORT_SYMBOL(sysctl_ip_nonlocal_bind);