aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesper Dangaard Brouer <brouer@redhat.com>2017-09-01 05:26:13 -0400
committerDavid S. Miller <davem@davemloft.net>2017-09-03 14:01:05 -0400
commit5a63643e583b6a9789d7a225ae076fb4e603991c (patch)
treedf2e5f6fbb0792262701818650a9d6f35f6b5151
parentfb452a1aa3fd4034d7999e309c5466ff2d7005aa (diff)
Revert "net: fix percpu memory leaks"
This reverts commit 1d6119baf0610f813eb9d9580eb4fd16de5b4ceb. After reverting commit 6d7b857d541e ("net: use lib/percpu_counter API for fragmentation mem accounting") then here is no need for this fix-up patch. As percpu_counter is no longer used, it cannot memory leak it any-longer. Fixes: 6d7b857d541e ("net: use lib/percpu_counter API for fragmentation mem accounting") Fixes: 1d6119baf061 ("net: fix percpu memory leaks") Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/inet_frag.h7
-rw-r--r--net/ieee802154/6lowpan/reassembly.c11
-rw-r--r--net/ipv4/ip_fragment.c12
-rw-r--r--net/ipv6/netfilter/nf_conntrack_reasm.c12
-rw-r--r--net/ipv6/reassembly.c12
5 files changed, 13 insertions, 41 deletions
diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h
index fa635aa6d0b9..fc59e0775e00 100644
--- a/include/net/inet_frag.h
+++ b/include/net/inet_frag.h
@@ -103,15 +103,10 @@ struct inet_frags {
103int inet_frags_init(struct inet_frags *); 103int inet_frags_init(struct inet_frags *);
104void inet_frags_fini(struct inet_frags *); 104void inet_frags_fini(struct inet_frags *);
105 105
106static inline int inet_frags_init_net(struct netns_frags *nf) 106static inline void inet_frags_init_net(struct netns_frags *nf)
107{ 107{
108 atomic_set(&nf->mem, 0); 108 atomic_set(&nf->mem, 0);
109 return 0;
110} 109}
111static inline void inet_frags_uninit_net(struct netns_frags *nf)
112{
113}
114
115void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f); 110void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f);
116 111
117void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); 112void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f);
diff --git a/net/ieee802154/6lowpan/reassembly.c b/net/ieee802154/6lowpan/reassembly.c
index 30d875dff6b5..f85b08baff16 100644
--- a/net/ieee802154/6lowpan/reassembly.c
+++ b/net/ieee802154/6lowpan/reassembly.c
@@ -580,19 +580,14 @@ static int __net_init lowpan_frags_init_net(struct net *net)
580{ 580{
581 struct netns_ieee802154_lowpan *ieee802154_lowpan = 581 struct netns_ieee802154_lowpan *ieee802154_lowpan =
582 net_ieee802154_lowpan(net); 582 net_ieee802154_lowpan(net);
583 int res;
584 583
585 ieee802154_lowpan->frags.high_thresh = IPV6_FRAG_HIGH_THRESH; 584 ieee802154_lowpan->frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
586 ieee802154_lowpan->frags.low_thresh = IPV6_FRAG_LOW_THRESH; 585 ieee802154_lowpan->frags.low_thresh = IPV6_FRAG_LOW_THRESH;
587 ieee802154_lowpan->frags.timeout = IPV6_FRAG_TIMEOUT; 586 ieee802154_lowpan->frags.timeout = IPV6_FRAG_TIMEOUT;
588 587
589 res = inet_frags_init_net(&ieee802154_lowpan->frags); 588 inet_frags_init_net(&ieee802154_lowpan->frags);
590 if (res) 589
591 return res; 590 return lowpan_frags_ns_sysctl_register(net);
592 res = lowpan_frags_ns_sysctl_register(net);
593 if (res)
594 inet_frags_uninit_net(&ieee802154_lowpan->frags);
595 return res;
596} 591}
597 592
598static void __net_exit lowpan_frags_exit_net(struct net *net) 593static void __net_exit lowpan_frags_exit_net(struct net *net)
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c
index 9a8cfac503dc..46408c220d9d 100644
--- a/net/ipv4/ip_fragment.c
+++ b/net/ipv4/ip_fragment.c
@@ -844,8 +844,6 @@ static void __init ip4_frags_ctl_register(void)
844 844
845static int __net_init ipv4_frags_init_net(struct net *net) 845static int __net_init ipv4_frags_init_net(struct net *net)
846{ 846{
847 int res;
848
849 /* Fragment cache limits. 847 /* Fragment cache limits.
850 * 848 *
851 * The fragment memory accounting code, (tries to) account for 849 * The fragment memory accounting code, (tries to) account for
@@ -871,13 +869,9 @@ static int __net_init ipv4_frags_init_net(struct net *net)
871 869
872 net->ipv4.frags.max_dist = 64; 870 net->ipv4.frags.max_dist = 64;
873 871
874 res = inet_frags_init_net(&net->ipv4.frags); 872 inet_frags_init_net(&net->ipv4.frags);
875 if (res) 873
876 return res; 874 return ip4_frags_ns_ctl_register(net);
877 res = ip4_frags_ns_ctl_register(net);
878 if (res)
879 inet_frags_uninit_net(&net->ipv4.frags);
880 return res;
881} 875}
882 876
883static void __net_exit ipv4_frags_exit_net(struct net *net) 877static void __net_exit ipv4_frags_exit_net(struct net *net)
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c
index 986d4ca38832..b263bf3a19f7 100644
--- a/net/ipv6/netfilter/nf_conntrack_reasm.c
+++ b/net/ipv6/netfilter/nf_conntrack_reasm.c
@@ -622,18 +622,12 @@ EXPORT_SYMBOL_GPL(nf_ct_frag6_gather);
622 622
623static int nf_ct_net_init(struct net *net) 623static int nf_ct_net_init(struct net *net)
624{ 624{
625 int res;
626
627 net->nf_frag.frags.high_thresh = IPV6_FRAG_HIGH_THRESH; 625 net->nf_frag.frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
628 net->nf_frag.frags.low_thresh = IPV6_FRAG_LOW_THRESH; 626 net->nf_frag.frags.low_thresh = IPV6_FRAG_LOW_THRESH;
629 net->nf_frag.frags.timeout = IPV6_FRAG_TIMEOUT; 627 net->nf_frag.frags.timeout = IPV6_FRAG_TIMEOUT;
630 res = inet_frags_init_net(&net->nf_frag.frags); 628 inet_frags_init_net(&net->nf_frag.frags);
631 if (res) 629
632 return res; 630 return nf_ct_frag6_sysctl_register(net);
633 res = nf_ct_frag6_sysctl_register(net);
634 if (res)
635 inet_frags_uninit_net(&net->nf_frag.frags);
636 return res;
637} 631}
638 632
639static void nf_ct_net_exit(struct net *net) 633static void nf_ct_net_exit(struct net *net)
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
index e1da5b888cc4..846012eae526 100644
--- a/net/ipv6/reassembly.c
+++ b/net/ipv6/reassembly.c
@@ -714,19 +714,13 @@ static void ip6_frags_sysctl_unregister(void)
714 714
715static int __net_init ipv6_frags_init_net(struct net *net) 715static int __net_init ipv6_frags_init_net(struct net *net)
716{ 716{
717 int res;
718
719 net->ipv6.frags.high_thresh = IPV6_FRAG_HIGH_THRESH; 717 net->ipv6.frags.high_thresh = IPV6_FRAG_HIGH_THRESH;
720 net->ipv6.frags.low_thresh = IPV6_FRAG_LOW_THRESH; 718 net->ipv6.frags.low_thresh = IPV6_FRAG_LOW_THRESH;
721 net->ipv6.frags.timeout = IPV6_FRAG_TIMEOUT; 719 net->ipv6.frags.timeout = IPV6_FRAG_TIMEOUT;
722 720
723 res = inet_frags_init_net(&net->ipv6.frags); 721 inet_frags_init_net(&net->ipv6.frags);
724 if (res) 722
725 return res; 723 return ip6_frags_ns_sysctl_register(net);
726 res = ip6_frags_ns_sysctl_register(net);
727 if (res)
728 inet_frags_uninit_net(&net->ipv6.frags);
729 return res;
730} 724}
731 725
732static void __net_exit ipv6_frags_exit_net(struct net *net) 726static void __net_exit ipv6_frags_exit_net(struct net *net)