Message ID | 20190908191123.31059-1-xiyou.wangcong@gmail.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net] net_sched: check cops->tcf_block in tc_bind_tclass() | expand |
From: Cong Wang <xiyou.wangcong@gmail.com> Date: Sun, 8 Sep 2019 12:11:23 -0700 > At least sch_red and sch_tbf don't implement ->tcf_block() > while still have a non-zero tc "class". > > Instead of adding nop implementations to each of such qdisc's, > we can just relax the check of cops->tcf_block() in > tc_bind_tclass(). They don't support TC filter anyway. > > Reported-by: syzbot+21b29db13c065852f64b@syzkaller.appspotmail.com > Cc: Jamal Hadi Salim <jhs@mojatatu.com> > Cc: Jiri Pirko <jiri@resnulli.us> > Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Applied.
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 04faee7ccbce..1047825d9f48 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -1920,6 +1920,8 @@ static void tc_bind_tclass(struct Qdisc *q, u32 portid, u32 clid, cl = cops->find(q, portid); if (!cl) return; + if (!cops->tcf_block) + return; block = cops->tcf_block(q, cl, NULL); if (!block) return;
At least sch_red and sch_tbf don't implement ->tcf_block() while still have a non-zero tc "class". Instead of adding nop implementations to each of such qdisc's, we can just relax the check of cops->tcf_block() in tc_bind_tclass(). They don't support TC filter anyway. Reported-by: syzbot+21b29db13c065852f64b@syzkaller.appspotmail.com Cc: Jamal Hadi Salim <jhs@mojatatu.com> Cc: Jiri Pirko <jiri@resnulli.us> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> --- net/sched/sch_api.c | 2 ++ 1 file changed, 2 insertions(+)