From: Cong Wang Date: Sun, 8 Sep 2019 19:11:23 +0000 (-0700) Subject: net_sched: check cops->tcf_block in tc_bind_tclass() X-Git-Tag: Ubuntu-5.4-5.4.0-11.14~2119^2~22 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=8b142a00edcf8422ca48b8de88d286efb500cb53;p=mirror_ubuntu-focal-kernel.git net_sched: check cops->tcf_block in tc_bind_tclass() 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 Cc: Jiri Pirko Signed-off-by: Cong Wang Signed-off-by: David S. Miller --- 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;