diff --git a/net/sched/sch_fifo.c b/net/sched/sch_fifo.c index 56f4c1621e44..b76c3d199ca1 100644 --- a/net/sched/sch_fifo.c +++ b/net/sched/sch_fifo.c @@ -38,6 +38,9 @@ static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc *sch, { unsigned int prev_backlog; + if (unlikely(READ_ONCE(sch->limit) == 0)) + return qdisc_drop(skb, sch, to_free); + if (likely(sch->q.qlen < sch->limit)) return qdisc_enqueue_tail(skb, sch);