Patch "net_sched: fix pfifo_head_drop behavior vs backlog" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
net_sched: fix pfifo_head_drop behavior vs backlog
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net_sched-fix-pfifo_head_drop-behavior-vs-backlog.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Jul 6 16:50:47 PDT 2016
From: Eric Dumazet <[email protected]>
Date: Sun, 12 Jun 2016 20:01:25 -0700
Subject: net_sched: fix pfifo_head_drop behavior vs backlog
From: Eric Dumazet <[email protected]>
[ Upstream commit 6c0d54f1897d229748d4f41ef919078db6db2123 ]
When the qdisc is full, we drop a packet at the head of the queue, queue the current skb and return NET_XMIT_CN
Now we track backlog on upper qdiscs, we need to call qdisc_tree_reduce_backlog(), even if the qlen did not change.
--- net/sched/sch_fifo.c | 4 ++++ 1 file changed, 4 insertions(+)
net/sched/sch_fifo.c +4 -0
@@ -37,14 +37,18 @@ static int pfifo_enqueue(struct sk_buffstatic int pfifo_tail_enqueue (struct sk_buff *skb,struct Qdisc *sch) { +unsigned int prev_backlog; +if (likely (skb_queue_len (&sch->q) < sch->limit))return qdisc_enqueue_tail (skb, sch); + prev_backlog = sch->qstats.backlog;/* queue full, remove one skb to fulfill the limit */ __qdisc_queue_drop_head (sch, &sch->q);qdisc_qstats_drop (sch);qdisc_enqueue_tail (skb, sch); +qdisc_tree_reduce_backlog (sch,0 , prev_backlog - sch->qstats.backlog);return NET_XMIT_CN ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/net-alx-work-around-the-dma-rx-overflow-issue.patch queue-4.4/netem-fix-a-use-after-free.patch queue-4.4/net_sched-fix-pfifo_head_drop-behavior-vs-backlog.patch