aboutsummaryrefslogtreecommitdiffstats
path: root/net/mpls/af_mpls.c
diff options
context:
space:
mode:
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>2015-08-31 13:44:19 -0400
committerDavid S. Miller <davem@davemloft.net>2015-08-31 15:45:09 -0400
commit6ea3c9d5b042edf14eac1e21af21c41f81f3491e (patch)
tree313f0bacf4abc9db2c8063463335747f9cd76bec /net/mpls/af_mpls.c
parentf0fa6e529efbca3b97ab6286dbeb5910e33f6c53 (diff)
mpls: fix mpls_net_init memory leak
Fix a memory leak in the mpls netns init function in case of failure. If register_net_sysctl fails then we need to free the ctl_table. Fixes: 7720c01f3f59 ("mpls: Add a sysctl to control the size of the mpls label table") Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mpls/af_mpls.c')
-rw-r--r--net/mpls/af_mpls.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
index 8c5707db53c5..bb185a28de98 100644
--- a/net/mpls/af_mpls.c
+++ b/net/mpls/af_mpls.c
@@ -1177,8 +1177,10 @@ static int mpls_net_init(struct net *net)
1177 1177
1178 table[0].data = net; 1178 table[0].data = net;
1179 net->mpls.ctl = register_net_sysctl(net, "net/mpls", table); 1179 net->mpls.ctl = register_net_sysctl(net, "net/mpls", table);
1180 if (net->mpls.ctl == NULL) 1180 if (net->mpls.ctl == NULL) {
1181 kfree(table);
1181 return -ENOMEM; 1182 return -ENOMEM;
1183 }
1182 1184
1183 return 0; 1185 return 0;
1184} 1186}