]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
net: sched: fix dump qlen for sch_mq/sch_mqprio with NOLOCK subqueues
authorDust Li <dust.li@linux.alibaba.com>
Tue, 3 Dec 2019 03:17:40 +0000 (11:17 +0800)
committerMarcelo Henrique Cerri <marcelo.cerri@canonical.com>
Fri, 17 Jan 2020 17:24:16 +0000 (14:24 -0300)
BugLink: https://bugs.launchpad.net/bugs/1856870
[ Upstream commit 2f23cd42e19c22c24ff0e221089b7b6123b117c5 ]

sch->q.len hasn't been set if the subqueue is a NOLOCK qdisc
 in mq_dump() and mqprio_dump().

Fixes: ce679e8df7ed ("net: sched: add support for TCQ_F_NOLOCK subqueues to sch_mqprio")
Signed-off-by: Dust Li <dust.li@linux.alibaba.com>
Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Connor Kuehl <connor.kuehl@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
net/sched/sch_mq.c
net/sched/sch_mqprio.c

index 278c0b2dc523cdef6ea003be5611cf9380a3a5c6..e79f1afe0cfd6f55c2f0fdecf9c1e70bad0961e9 100644 (file)
@@ -153,6 +153,7 @@ static int mq_dump(struct Qdisc *sch, struct sk_buff *skb)
                        __gnet_stats_copy_queue(&sch->qstats,
                                                qdisc->cpu_qstats,
                                                &qdisc->qstats, qlen);
+                       sch->q.qlen             += qlen;
                } else {
                        sch->q.qlen             += qdisc->q.qlen;
                        sch->bstats.bytes       += qdisc->bstats.bytes;
index 7b67e4d8e44890eb59bef39cd0fc54557a0d2938..8766ab5b8788042df03b0b8cdb9e35734ef1a8a7 100644 (file)
@@ -411,6 +411,7 @@ static int mqprio_dump(struct Qdisc *sch, struct sk_buff *skb)
                        __gnet_stats_copy_queue(&sch->qstats,
                                                qdisc->cpu_qstats,
                                                &qdisc->qstats, qlen);
+                       sch->q.qlen             += qlen;
                } else {
                        sch->q.qlen             += qdisc->q.qlen;
                        sch->bstats.bytes       += qdisc->bstats.bytes;