mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
pkt_sched: fq: do not accept silly TCA_FQ_QUANTUM
[ Upstream commitd9e15a2733] As diagnosed by Florian : If TCA_FQ_QUANTUM is set to 0x80000000, fq_deueue() can loop forever in : if (f->credit <= 0) { f->credit += q->quantum; goto begin; } ... because f->credit is either 0 or -2147483648. Let's limit TCA_FQ_QUANTUM to no more than 1 << 20 : This max value should limit risks of breaking user setups while fixing this bug. Fixes:afe4fd0624("pkt_sched: fq: Fair Queue packet scheduler") Signed-off-by: Eric Dumazet <edumazet@google.com> Diagnosed-by: Florian Westphal <fw@strlen.de> Reported-by: syzbot+dc9071cc5a85950bdfce@syzkaller.appspotmail.com Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
eca9a2f2b9
commit
9e9dcbc9e5
@@ -736,7 +736,7 @@ static int fq_change(struct Qdisc *sch, struct nlattr *opt)
|
||||
if (tb[TCA_FQ_QUANTUM]) {
|
||||
u32 quantum = nla_get_u32(tb[TCA_FQ_QUANTUM]);
|
||||
|
||||
if (quantum > 0)
|
||||
if (quantum > 0 && quantum <= (1 << 20))
|
||||
q->quantum = quantum;
|
||||
else
|
||||
err = -EINVAL;
|
||||
|
||||
Reference in New Issue
Block a user