From: John Fastabend Date: Tue, 5 Jan 2016 17:11:36 +0000 (-0800) Subject: net: sched: fix missing free per cpu on qstats X-Git-Tag: v4.1.12-92~150^2~365 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=f1193666f6ede85d2b8b88d93126169385964c8a;p=users%2Fjedix%2Flinux-maple.git net: sched: fix missing free per cpu on qstats Orabug: 23330549 [ Upstream commit 73c20a8b7245273125cfe92c4b46e6fdb568a801 ] When a qdisc is using per cpu stats (currently just the ingress qdisc) only the bstats are being freed. This also free's the qstats. Fixes: b0ab6f92752b9f9d8 ("net: sched: enable per cpu qstats") Signed-off-by: John Fastabend Acked-by: Eric Dumazet Acked-by: Daniel Borkmann Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman (cherry picked from commit 02a1fef61d06bb0417b60f1233320e141266860c) Signed-off-by: Dan Duval --- diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index b453270be3fd..3c6f6b774ba6 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -666,8 +666,10 @@ static void qdisc_rcu_free(struct rcu_head *head) { struct Qdisc *qdisc = container_of(head, struct Qdisc, rcu_head); - if (qdisc_is_percpu_stats(qdisc)) + if (qdisc_is_percpu_stats(qdisc)) { free_percpu(qdisc->cpu_bstats); + free_percpu(qdisc->cpu_qstats); + } kfree((char *) qdisc - qdisc->padded); }