[PATCH] netfilter: nfnetlink_cthelper: Fix memory leak

Dmitry Torokhov dmitry.torokhov at gmail.com
Tue Mar 21 13:14:52 PDT 2017


On Mon, Mar 20, 2017 at 11:57 PM, Jeffy Chen <jeffy.chen at rock-chips.com> wrote:
> We have memory leaks of nf_conntrack_helper & expect_policy.
>
> Signed-off-by: Jeffy Chen <jeffy.chen at rock-chips.com>

This looks reasonable to me:

Reviewed-by: Dmitry Torokhov <dmitry.torokhov at gmail.com>

But you need to send it to correct lists, and linux-arm-kernel is not it:

./scripts/get_maintainer.pl -f net/netfilter/nfnetlink_cthelper.c
Pablo Neira Ayuso <pablo at netfilter.org> (supporter:NETFILTER)
Jozsef Kadlecsik <kadlec at blackhole.kfki.hu> (supporter:NETFILTER)
"David S. Miller" <davem at davemloft.net> (maintainer:NETWORKING [GENERAL])
netfilter-devel at vger.kernel.org (open list:NETFILTER)
coreteam at netfilter.org (open list:NETFILTER)
netdev at vger.kernel.org (open list:NETWORKING [GENERAL])
linux-kernel at vger.kernel.org (open list)

> ---
>
>  net/netfilter/nfnetlink_cthelper.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/net/netfilter/nfnetlink_cthelper.c b/net/netfilter/nfnetlink_cthelper.c
> index de87823..99d4bd7 100644
> --- a/net/netfilter/nfnetlink_cthelper.c
> +++ b/net/netfilter/nfnetlink_cthelper.c
> @@ -191,6 +191,8 @@ nfnl_cthelper_parse_expect_policy(struct nf_conntrack_helper *helper,
>                 if (ret < 0)
>                         goto err;
>         }
> +
> +       kfree(helper->expect_policy);
>         helper->expect_policy = expect_policy;
>         return 0;
>  err:
> @@ -249,6 +251,7 @@ nfnl_cthelper_create(const struct nlattr * const tb[],
>
>         return 0;
>  err:
> +       kfree(helper->expect_policy);
>         kfree(helper);
>         return ret;
>  }
> @@ -612,6 +615,8 @@ static int nfnl_cthelper_del(struct net *net, struct sock *nfnl,
>
>                         found = true;
>                         nf_conntrack_helper_unregister(cur);
> +                       kfree(cur->expect_policy);
> +                       kfree(cur);
>                 }
>         }
>         /* Make sure we return success if we flush and there is no helpers */
> @@ -675,6 +680,8 @@ static void __exit nfnl_cthelper_exit(void)
>                                 continue;
>
>                         nf_conntrack_helper_unregister(cur);
> +                       kfree(cur->expect_policy);
> +                       kfree(cur);
>                 }
>         }
>  }

Thanks.

-- 
Dmitry



More information about the linux-arm-kernel mailing list