Commit 3725a269815ba6dbb415feddc47da5af7d1fac58
Committed by
David S. Miller
1 parent
db27ebb111
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
pkt_sched: fq: avoid hang when quantum 0
Configuring fq with quantum 0 hangs the system, presumably because of a non-interruptible infinite loop. Either way quantum 0 does not make sense. Reproduce with: sudo tc qdisc add dev lo root fq quantum 0 initial_quantum 0 ping 127.0.0.1 Signed-off-by: Kenneth Klette Jonassen <kennetkl@ifi.uio.no> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 8 additions and 2 deletions Side-by-side Diff
net/sched/sch_fq.c
... | ... | @@ -670,8 +670,14 @@ |
670 | 670 | if (tb[TCA_FQ_FLOW_PLIMIT]) |
671 | 671 | q->flow_plimit = nla_get_u32(tb[TCA_FQ_FLOW_PLIMIT]); |
672 | 672 | |
673 | - if (tb[TCA_FQ_QUANTUM]) | |
674 | - q->quantum = nla_get_u32(tb[TCA_FQ_QUANTUM]); | |
673 | + if (tb[TCA_FQ_QUANTUM]) { | |
674 | + u32 quantum = nla_get_u32(tb[TCA_FQ_QUANTUM]); | |
675 | + | |
676 | + if (quantum > 0) | |
677 | + q->quantum = quantum; | |
678 | + else | |
679 | + err = -EINVAL; | |
680 | + } | |
675 | 681 | |
676 | 682 | if (tb[TCA_FQ_INITIAL_QUANTUM]) |
677 | 683 | q->initial_quantum = nla_get_u32(tb[TCA_FQ_INITIAL_QUANTUM]); |