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, 14 insertions, 0 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 68af9aac91d0..70011e029ac1 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1503,6 +1503,7 @@ int snmp_mib_init(void __percpu *ptr[2], size_t mibsize, size_t align)
1503 ptr[0] = __alloc_percpu(mibsize, align); 1503 ptr[0] = __alloc_percpu(mibsize, align);
1504 if (!ptr[0]) 1504 if (!ptr[0])
1505 return -ENOMEM; 1505 return -ENOMEM;
1506
1506#if SNMP_ARRAY_SZ == 2 1507#if SNMP_ARRAY_SZ == 2
1507 ptr[1] = __alloc_percpu(mibsize, align); 1508 ptr[1] = __alloc_percpu(mibsize, align);
1508 if (!ptr[1]) { 1509 if (!ptr[1]) {
@@ -1547,6 +1548,8 @@ static const struct net_protocol icmp_protocol = {
1547 1548
1548static __net_init int ipv4_mib_init_net(struct net *net) 1549static __net_init int ipv4_mib_init_net(struct net *net)
1549{ 1550{
1551 int i;
1552
1550 if (snmp_mib_init((void __percpu **)net->mib.tcp_statistics, 1553 if (snmp_mib_init((void __percpu **)net->mib.tcp_statistics,
1551 sizeof(struct tcp_mib), 1554 sizeof(struct tcp_mib),
1552 __alignof__(struct tcp_mib)) < 0) 1555 __alignof__(struct tcp_mib)) < 0)
@@ -1555,6 +1558,17 @@ static __net_init int ipv4_mib_init_net(struct net *net)
1555 sizeof(struct ipstats_mib), 1558 sizeof(struct ipstats_mib),
1556 __alignof__(struct ipstats_mib)) < 0) 1559 __alignof__(struct ipstats_mib)) < 0)
1557 goto err_ip_mib; 1560 goto err_ip_mib;
1561
1562 for_each_possible_cpu(i) {
1563 struct ipstats_mib *af_inet_stats;
1564 af_inet_stats = per_cpu_ptr(net->mib.ip_statistics[0], i);
1565 u64_stats_init(&af_inet_stats->syncp);
1566#if SNMP_ARRAY_SZ == 2
1567 af_inet_stats = per_cpu_ptr(net->mib.ip_statistics[1], i);
1568 u64_stats_init(&af_inet_stats->syncp);
1569#endif
1570 }
1571
1558 if (snmp_mib_init((void __percpu **)net->mib.net_statistics, 1572 if (snmp_mib_init((void __percpu **)net->mib.net_statistics,
1559 sizeof(struct linux_mib), 1573 sizeof(struct linux_mib),
1560 __alignof__(struct linux_mib)) < 0) 1574 __alignof__(struct linux_mib)) < 0)