From 27ee441a43392ebe5b027fe5d78640e839673d21 Mon Sep 17 00:00:00 2001 From: Pablo Neira Date: Thu, 12 May 2016 17:16:31 +0200 Subject: [PATCH] gtp: put back reference to netns when not required anymore This patch fixes a netns leak. Fixes: 93edb8c7f94f ("gtp: reload GTPv1 header after pskb_may_pull()") Reported-by: Cong Wang Signed-off-by: Pablo Neira Ayuso Signed-off-by: David S. Miller --- drivers/net/gtp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index f7caf1e..4e976a0 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c @@ -1028,8 +1028,11 @@ static int gtp_genl_new_pdp(struct sk_buff *skb, struct genl_info *info) /* Check if there's an existing gtpX device to configure */ dev = gtp_find_dev(net, nla_get_u32(info->attrs[GTPA_LINK])); - if (dev == NULL) + if (dev == NULL) { + put_net(net); return -ENODEV; + } + put_net(net); return ipv4_pdp_add(dev, info); } @@ -1051,8 +1054,11 @@ static int gtp_genl_del_pdp(struct sk_buff *skb, struct genl_info *info) /* Check if there's an existing gtpX device to configure */ dev = gtp_find_dev(net, nla_get_u32(info->attrs[GTPA_LINK])); - if (dev == NULL) + if (dev == NULL) { + put_net(net); return -ENODEV; + } + put_net(net); gtp = netdev_priv(dev); @@ -1163,8 +1169,11 @@ static int gtp_genl_get_pdp(struct sk_buff *skb, struct genl_info *info) /* Check if there's an existing gtpX device to configure */ dev = gtp_find_dev(net, nla_get_u32(info->attrs[GTPA_LINK])); - if (dev == NULL) + if (dev == NULL) { + put_net(net); return -ENODEV; + } + put_net(net); gtp = netdev_priv(dev); -- 2.7.4