diff options
Diffstat (limited to 'net/sched/sch_hfsc.c')
-rw-r--r-- | net/sched/sch_hfsc.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index fcb4826158d6..10a2f35a27a8 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c | |||
@@ -1343,22 +1343,23 @@ hfsc_dump_class(struct Qdisc *sch, unsigned long arg, struct sk_buff *skb, | |||
1343 | struct tcmsg *tcm) | 1343 | struct tcmsg *tcm) |
1344 | { | 1344 | { |
1345 | struct hfsc_class *cl = (struct hfsc_class *)arg; | 1345 | struct hfsc_class *cl = (struct hfsc_class *)arg; |
1346 | unsigned char *b = skb_tail_pointer(skb); | 1346 | struct nlattr *nest; |
1347 | struct nlattr *nla = (struct nlattr *)b; | ||
1348 | 1347 | ||
1349 | tcm->tcm_parent = cl->cl_parent ? cl->cl_parent->classid : TC_H_ROOT; | 1348 | tcm->tcm_parent = cl->cl_parent ? cl->cl_parent->classid : TC_H_ROOT; |
1350 | tcm->tcm_handle = cl->classid; | 1349 | tcm->tcm_handle = cl->classid; |
1351 | if (cl->level == 0) | 1350 | if (cl->level == 0) |
1352 | tcm->tcm_info = cl->qdisc->handle; | 1351 | tcm->tcm_info = cl->qdisc->handle; |
1353 | 1352 | ||
1354 | NLA_PUT(skb, TCA_OPTIONS, 0, NULL); | 1353 | nest = nla_nest_start(skb, TCA_OPTIONS); |
1354 | if (nest == NULL) | ||
1355 | goto nla_put_failure; | ||
1355 | if (hfsc_dump_curves(skb, cl) < 0) | 1356 | if (hfsc_dump_curves(skb, cl) < 0) |
1356 | goto nla_put_failure; | 1357 | goto nla_put_failure; |
1357 | nla->nla_len = skb_tail_pointer(skb) - b; | 1358 | nla_nest_end(skb, nest); |
1358 | return skb->len; | 1359 | return skb->len; |
1359 | 1360 | ||
1360 | nla_put_failure: | 1361 | nla_put_failure: |
1361 | nlmsg_trim(skb, b); | 1362 | nla_nest_cancel(skb, nest); |
1362 | return -1; | 1363 | return -1; |
1363 | } | 1364 | } |
1364 | 1365 | ||