| From foo@baz Sun 09 Feb 2020 10:56:46 PM CET |
| From: Cong Wang <xiyou.wangcong@gmail.com> |
| Date: Tue, 4 Feb 2020 11:10:12 -0800 |
| Subject: net_sched: fix a resource leak in tcindex_set_parms() |
| |
| From: Cong Wang <xiyou.wangcong@gmail.com> |
| |
| [ Upstream commit 52b5ae501c045010aeeb1d5ac0373ff161a88291 ] |
| |
| Jakub noticed there is a potential resource leak in |
| tcindex_set_parms(): when tcindex_filter_result_init() fails |
| and it jumps to 'errout1' which doesn't release the memory |
| and resources allocated by tcindex_alloc_perfect_hash(). |
| |
| We should just jump to 'errout_alloc' which calls |
| tcindex_free_perfect_hash(). |
| |
| Fixes: b9a24bb76bf6 ("net_sched: properly handle failure case of tcf_exts_init()") |
| Reported-by: Jakub Kicinski <kuba@kernel.org> |
| Cc: Jamal Hadi Salim <jhs@mojatatu.com> |
| Cc: Jiri Pirko <jiri@resnulli.us> |
| Signed-off-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> |
| --- |
| net/sched/cls_tcindex.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/net/sched/cls_tcindex.c |
| +++ b/net/sched/cls_tcindex.c |
| @@ -365,7 +365,7 @@ tcindex_set_parms(struct net *net, struc |
| |
| err = tcindex_filter_result_init(&new_filter_result); |
| if (err < 0) |
| - goto errout1; |
| + goto errout_alloc; |
| if (old_r) |
| cr = r->res; |
| |
| @@ -484,7 +484,6 @@ errout_alloc: |
| tcindex_free_perfect_hash(cp); |
| else if (balloc == 2) |
| kfree(cp->h); |
| -errout1: |
| tcf_exts_destroy(&new_filter_result.exts); |
| errout: |
| kfree(cp); |