Commit 3725a269815ba6dbb415feddc47da5af7d1fac58

Authored by Kenneth Klette Jonassen
Committed by David S. Miller
1 parent db27ebb111

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

... ... @@ -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]);