|
@@ -1158,9 +1158,13 @@ static int cbq_init(struct Qdisc *sch, struct nlattr *opt)
|
|
|
if ((q->link.R_tab = qdisc_get_rtab(r, tb[TCA_CBQ_RTAB])) == NULL)
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ err = tcf_block_get(&q->link.block, &q->link.filter_list, sch);
|
|
|
+ if (err)
|
|
|
+ goto put_rtab;
|
|
|
+
|
|
|
err = qdisc_class_hash_init(&q->clhash);
|
|
|
if (err < 0)
|
|
|
- goto put_rtab;
|
|
|
+ goto put_block;
|
|
|
|
|
|
q->link.sibling = &q->link;
|
|
|
q->link.common.classid = sch->handle;
|
|
@@ -1194,6 +1198,9 @@ static int cbq_init(struct Qdisc *sch, struct nlattr *opt)
|
|
|
cbq_addprio(q, &q->link);
|
|
|
return 0;
|
|
|
|
|
|
+put_block:
|
|
|
+ tcf_block_put(q->link.block);
|
|
|
+
|
|
|
put_rtab:
|
|
|
qdisc_put_rtab(q->link.R_tab);
|
|
|
return err;
|