X-Git-Url: https://nv-tegra.nvidia.com/r/gitweb?p=linux-2.6.git;a=blobdiff_plain;f=net%2Fsched%2Fcls_api.c;h=5584e7cd4b9f5898f4e289f02660845834b471c3;hp=92fa1559c211e1de05ae6cdaac2c8ae70c6b6bb8;hb=4b3550ef530cfc153fa91f0b37cbda448bad11c6;hpb=cee63723b358e594225e812d6e14a2a0abfd5c88 diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 92fa1559c21..5584e7cd4b9 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -544,18 +544,22 @@ int tcf_exts_dump(struct sk_buff *skb, struct tcf_exts *exts, * to work with both old and new modes of entering * tc data even if iproute2 was newer - jhs */ - struct nlattr *p_rta = (struct nlattr *)skb_tail_pointer(skb); + struct nlattr *nest; if (exts->action->type != TCA_OLD_COMPAT) { - NLA_PUT(skb, map->action, 0, NULL); + nest = nla_nest_start(skb, map->action); + if (nest == NULL) + goto nla_put_failure; if (tcf_action_dump(skb, exts->action, 0, 0) < 0) goto nla_put_failure; - p_rta->nla_len = skb_tail_pointer(skb) - (u8 *)p_rta; + nla_nest_end(skb, nest); } else if (map->police) { - NLA_PUT(skb, map->police, 0, NULL); + nest = nla_nest_start(skb, map->police); + if (nest == NULL) + goto nla_put_failure; if (tcf_action_dump_old(skb, exts->action, 0, 0) < 0) goto nla_put_failure; - p_rta->nla_len = skb_tail_pointer(skb) - (u8 *)p_rta; + nla_nest_end(skb, nest); } } #endif