diff options
author | Davide Caratti <dcaratti@redhat.com> | 2018-11-14 14:17:25 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-11-23 10:17:03 +0300 |
commit | ae06e2f9c1777592c13910dda9d25d9fd5c1381a (patch) | |
tree | 3a9c9e5cc763954ab656c558311fcd1c556ed029 /net | |
parent | 3d6679c85a53bd2ce837bcb87bbddfc369b8cf2c (diff) | |
download | linux-ae06e2f9c1777592c13910dda9d25d9fd5c1381a.tar.xz |
net/sched: act_pedit: fix memory leak when IDR allocation fails
[ Upstream commit 19ab69107d3ecfb7cd3e38ad262a881be40c01a3 ]
tcf_idr_check_alloc() can return a negative value, on allocation failures
(-ENOMEM) or IDR exhaustion (-ENOSPC): don't leak keys_ex in these cases.
Fixes: 0190c1d452a9 ("net: sched: atomically check-allocate action")
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/sched/act_pedit.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c index ad99a99f11f6..ca535a8585bc 100644 --- a/net/sched/act_pedit.c +++ b/net/sched/act_pedit.c @@ -201,7 +201,8 @@ static int tcf_pedit_init(struct net *net, struct nlattr *nla, goto out_release; } } else { - return err; + ret = err; + goto out_free; } p = to_pedit(*a); |