Commit 41065fba authored by Jarek Poplawski's avatar Jarek Poplawski Committed by David S. Miller

pkt_sched: Fix sch_sfq vs tc_modify_qdisc oops

sch_sfq as a classful qdisc needs the .leaf handler. Otherwise, there
is an oops possible in tc_modify_qdisc()/check_loop().

Fixes commit 7d2681a6Signed-off-by: default avatarJarek Poplawski <jarkao2@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 98a21ef0
...@@ -508,6 +508,11 @@ static int sfq_dump(struct Qdisc *sch, struct sk_buff *skb) ...@@ -508,6 +508,11 @@ static int sfq_dump(struct Qdisc *sch, struct sk_buff *skb)
return -1; return -1;
} }
static struct Qdisc *sfq_leaf(struct Qdisc *sch, unsigned long arg)
{
return NULL;
}
static unsigned long sfq_get(struct Qdisc *sch, u32 classid) static unsigned long sfq_get(struct Qdisc *sch, u32 classid)
{ {
return 0; return 0;
...@@ -575,6 +580,7 @@ static void sfq_walk(struct Qdisc *sch, struct qdisc_walker *arg) ...@@ -575,6 +580,7 @@ static void sfq_walk(struct Qdisc *sch, struct qdisc_walker *arg)
} }
static const struct Qdisc_class_ops sfq_class_ops = { static const struct Qdisc_class_ops sfq_class_ops = {
.leaf = sfq_leaf,
.get = sfq_get, .get = sfq_get,
.put = sfq_put, .put = sfq_put,
.tcf_chain = sfq_find_tcf, .tcf_chain = sfq_find_tcf,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment