diff options
author | Pablo Neira <pablo@netfilter.org> | 2016-05-12 17:16:31 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-05-12 12:27:15 -0400 |
commit | 27ee441a43392ebe5b027fe5d78640e839673d21 (patch) | |
tree | 2b845961ddc3d5af1964f2373b4f9f79361fb56e /drivers/net/gtp.c | |
parent | 7fd38193d0473acc6e8f108107d0466f07768853 (diff) | |
download | blackbird-op-linux-27ee441a43392ebe5b027fe5d78640e839673d21.tar.gz blackbird-op-linux-27ee441a43392ebe5b027fe5d78640e839673d21.zip |
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 <xiyou.wangcong@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/gtp.c')
-rw-r--r-- | drivers/net/gtp.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index f7caf1e35d83..4e976a0d5a76 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); |