lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 15 Sep 2014 14:06:47 -0700 From: Cong Wang <xiyou.wangcong@...il.com> To: netdev@...r.kernel.org Cc: john.fastabend@...il.com, "David S. Miller" <davem@...emloft.net>, Cong Wang <xiyou.wangcong@...il.com> Subject: [Patch net-next 2/5] net_sched: fix memory leak in cls_tcindex Fixes: commit 331b72922c5f58d48fd ("net: sched: RCU cls_tcindex") Cc: John Fastabend <john.fastabend@...il.com> Signed-off-by: Cong Wang <xiyou.wangcong@...il.com> --- net/sched/cls_tcindex.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c index a02ca72..16ec1ed 100644 --- a/net/sched/cls_tcindex.c +++ b/net/sched/cls_tcindex.c @@ -243,7 +243,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, */ cp = kzalloc(sizeof(*cp), GFP_KERNEL); if (!cp) - return -ENOMEM; + goto errout; cp->mask = p->mask; cp->shift = p->shift; @@ -257,6 +257,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, sizeof(*r) * cp->hash, GFP_KERNEL); if (!cp->perfect) goto errout; + balloc = 1; } cp->h = p->h; @@ -285,9 +286,9 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, if (cp->perfect) { if (!valid_perfect_hash(cp) || cp->hash > cp->alloc_hash) - goto errout; + goto errout_alloc; } else if (cp->h && cp->hash != cp->alloc_hash) { - goto errout; + goto errout_alloc; } err = -EINVAL; @@ -314,7 +315,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, */ if (cp->perfect || valid_perfect_hash(cp)) if (handle >= cp->alloc_hash) - goto errout; + goto errout_alloc; err = -ENOMEM; @@ -324,7 +325,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, cp->perfect = kcalloc(cp->hash, sizeof(*r), GFP_KERNEL); if (!cp->perfect) - goto errout; + goto errout_alloc; for (i = 0; i < cp->hash; i++) tcf_exts_init(&cp->perfect[i].exts, TCA_TCINDEX_ACT, @@ -338,7 +339,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, GFP_KERNEL); if (!hash) - goto errout; + goto errout_alloc; cp->h = hash; balloc = 2; -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists