OSDN Git Service

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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 21 Dec 2019 09:57:12 +0000 (10:57 +0100)
[ 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>
net/sched/sch_mq.c
net/sched/sch_mqprio.c

index 15c6eb5..c008a31 100644 (file)
@@ -158,6 +158,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 7f280a5..008db8d 100644 (file)
@@ -413,6 +413,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;