From: Greg Kroah-Hartman Date: Thu, 19 Dec 2024 17:20:56 +0000 (+0100) Subject: 6.1-stable patches X-Git-Tag: v6.1.122~59 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e5a56b1e87a2a20cfc3928f266d21b0ccbe61acf;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: net-sched-fix-ordering-of-qlen-adjustment.patch series --- diff --git a/queue-6.1/net-sched-fix-ordering-of-qlen-adjustment.patch b/queue-6.1/net-sched-fix-ordering-of-qlen-adjustment.patch new file mode 100644 index 00000000000..20ad292b3ea --- /dev/null +++ b/queue-6.1/net-sched-fix-ordering-of-qlen-adjustment.patch @@ -0,0 +1,58 @@ +From 5eb7de8cd58e73851cd37ff8d0666517d9926948 Mon Sep 17 00:00:00 2001 +From: Lion Ackermann +Date: Mon, 2 Dec 2024 17:22:57 +0100 +Subject: net: sched: fix ordering of qlen adjustment +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Lion Ackermann + +commit 5eb7de8cd58e73851cd37ff8d0666517d9926948 upstream. + +Changes to sch->q.qlen around qdisc_tree_reduce_backlog() need to happen +_before_ a call to said function because otherwise it may fail to notify +parent qdiscs when the child is about to become empty. + +Signed-off-by: Lion Ackermann +Acked-by: Toke Høiland-Jørgensen +Signed-off-by: David S. Miller +Cc: Artem Metla +Signed-off-by: Greg Kroah-Hartman +--- + net/sched/sch_cake.c | 2 +- + net/sched/sch_choke.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +--- a/net/sched/sch_cake.c ++++ b/net/sched/sch_cake.c +@@ -1541,7 +1541,6 @@ static unsigned int cake_drop(struct Qdi + b->backlogs[idx] -= len; + b->tin_backlog -= len; + sch->qstats.backlog -= len; +- qdisc_tree_reduce_backlog(sch, 1, len); + + flow->dropped++; + b->tin_dropped++; +@@ -1552,6 +1551,7 @@ static unsigned int cake_drop(struct Qdi + + __qdisc_drop(skb, to_free); + sch->q.qlen--; ++ qdisc_tree_reduce_backlog(sch, 1, len); + + cake_heapify(q, 0); + +--- a/net/sched/sch_choke.c ++++ b/net/sched/sch_choke.c +@@ -123,10 +123,10 @@ static void choke_drop_by_idx(struct Qdi + if (idx == q->tail) + choke_zap_tail_holes(q); + ++ --sch->q.qlen; + qdisc_qstats_backlog_dec(sch, skb); + qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(skb)); + qdisc_drop(skb, sch, to_free); +- --sch->q.qlen; + } + + struct choke_skb_cb { diff --git a/queue-6.1/series b/queue-6.1/series new file mode 100644 index 00000000000..19e6f6cda0b --- /dev/null +++ b/queue-6.1/series @@ -0,0 +1 @@ +net-sched-fix-ordering-of-qlen-adjustment.patch