ipv4: Stop using NLA_PUT*().
These macros contain a hidden goto, and are thus extremely error prone and make code hard to audit. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1654,17 +1654,18 @@ static int ipgre_fill_info(struct sk_buff *skb, const struct net_device *dev)
|
||||
struct ip_tunnel *t = netdev_priv(dev);
|
||||
struct ip_tunnel_parm *p = &t->parms;
|
||||
|
||||
NLA_PUT_U32(skb, IFLA_GRE_LINK, p->link);
|
||||
NLA_PUT_BE16(skb, IFLA_GRE_IFLAGS, p->i_flags);
|
||||
NLA_PUT_BE16(skb, IFLA_GRE_OFLAGS, p->o_flags);
|
||||
NLA_PUT_BE32(skb, IFLA_GRE_IKEY, p->i_key);
|
||||
NLA_PUT_BE32(skb, IFLA_GRE_OKEY, p->o_key);
|
||||
NLA_PUT_BE32(skb, IFLA_GRE_LOCAL, p->iph.saddr);
|
||||
NLA_PUT_BE32(skb, IFLA_GRE_REMOTE, p->iph.daddr);
|
||||
NLA_PUT_U8(skb, IFLA_GRE_TTL, p->iph.ttl);
|
||||
NLA_PUT_U8(skb, IFLA_GRE_TOS, p->iph.tos);
|
||||
NLA_PUT_U8(skb, IFLA_GRE_PMTUDISC, !!(p->iph.frag_off & htons(IP_DF)));
|
||||
|
||||
if (nla_put_u32(skb, IFLA_GRE_LINK, p->link) ||
|
||||
nla_put_be16(skb, IFLA_GRE_IFLAGS, p->i_flags) ||
|
||||
nla_put_be16(skb, IFLA_GRE_OFLAGS, p->o_flags) ||
|
||||
nla_put_be32(skb, IFLA_GRE_IKEY, p->i_key) ||
|
||||
nla_put_be32(skb, IFLA_GRE_OKEY, p->o_key) ||
|
||||
nla_put_be32(skb, IFLA_GRE_LOCAL, p->iph.saddr) ||
|
||||
nla_put_be32(skb, IFLA_GRE_REMOTE, p->iph.daddr) ||
|
||||
nla_put_u8(skb, IFLA_GRE_TTL, p->iph.ttl) ||
|
||||
nla_put_u8(skb, IFLA_GRE_TOS, p->iph.tos) ||
|
||||
nla_put_u8(skb, IFLA_GRE_PMTUDISC,
|
||||
!!(p->iph.frag_off & htons(IP_DF))))
|
||||
goto nla_put_failure;
|
||||
return 0;
|
||||
|
||||
nla_put_failure:
|
||||
|
Reference in New Issue
Block a user