]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Dec 2024 17:20:56 +0000 (18:20 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Dec 2024 17:20:56 +0000 (18:20 +0100)
added patches:
net-sched-fix-ordering-of-qlen-adjustment.patch
series

queue-6.1/net-sched-fix-ordering-of-qlen-adjustment.patch [new file with mode: 0644]
queue-6.1/series [new file with mode: 0644]

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 (file)
index 0000000..20ad292
--- /dev/null
@@ -0,0 +1,58 @@
+From 5eb7de8cd58e73851cd37ff8d0666517d9926948 Mon Sep 17 00:00:00 2001
+From: Lion Ackermann <nnamrec@gmail.com>
+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 <nnamrec@gmail.com>
+
+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 <nnamrec@gmail.com>
+Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Cc: Artem Metla <ametla@google.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..19e6f6c
--- /dev/null
@@ -0,0 +1 @@
+net-sched-fix-ordering-of-qlen-adjustment.patch