bridge: 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:
parent
2809cec5b5
commit
2eb812e650
@ -487,14 +487,14 @@ static int fdb_fill_info(struct sk_buff *skb, const struct net_bridge *br,
|
|||||||
ndm->ndm_ifindex = fdb->dst ? fdb->dst->dev->ifindex : br->dev->ifindex;
|
ndm->ndm_ifindex = fdb->dst ? fdb->dst->dev->ifindex : br->dev->ifindex;
|
||||||
ndm->ndm_state = fdb_to_nud(fdb);
|
ndm->ndm_state = fdb_to_nud(fdb);
|
||||||
|
|
||||||
NLA_PUT(skb, NDA_LLADDR, ETH_ALEN, &fdb->addr);
|
if (nla_put(skb, NDA_LLADDR, ETH_ALEN, &fdb->addr))
|
||||||
|
goto nla_put_failure;
|
||||||
ci.ndm_used = jiffies_to_clock_t(now - fdb->used);
|
ci.ndm_used = jiffies_to_clock_t(now - fdb->used);
|
||||||
ci.ndm_confirmed = 0;
|
ci.ndm_confirmed = 0;
|
||||||
ci.ndm_updated = jiffies_to_clock_t(now - fdb->updated);
|
ci.ndm_updated = jiffies_to_clock_t(now - fdb->updated);
|
||||||
ci.ndm_refcnt = 0;
|
ci.ndm_refcnt = 0;
|
||||||
NLA_PUT(skb, NDA_CACHEINFO, sizeof(ci), &ci);
|
if (nla_put(skb, NDA_CACHEINFO, sizeof(ci), &ci))
|
||||||
|
goto nla_put_failure;
|
||||||
return nlmsg_end(skb, nlh);
|
return nlmsg_end(skb, nlh);
|
||||||
|
|
||||||
nla_put_failure:
|
nla_put_failure:
|
||||||
|
@ -60,20 +60,17 @@ static int br_fill_ifinfo(struct sk_buff *skb, const struct net_bridge_port *por
|
|||||||
hdr->ifi_flags = dev_get_flags(dev);
|
hdr->ifi_flags = dev_get_flags(dev);
|
||||||
hdr->ifi_change = 0;
|
hdr->ifi_change = 0;
|
||||||
|
|
||||||
NLA_PUT_STRING(skb, IFLA_IFNAME, dev->name);
|
if (nla_put_string(skb, IFLA_IFNAME, dev->name) ||
|
||||||
NLA_PUT_U32(skb, IFLA_MASTER, br->dev->ifindex);
|
nla_put_u32(skb, IFLA_MASTER, br->dev->ifindex) ||
|
||||||
NLA_PUT_U32(skb, IFLA_MTU, dev->mtu);
|
nla_put_u32(skb, IFLA_MTU, dev->mtu) ||
|
||||||
NLA_PUT_U8(skb, IFLA_OPERSTATE, operstate);
|
nla_put_u8(skb, IFLA_OPERSTATE, operstate) ||
|
||||||
|
(dev->addr_len &&
|
||||||
if (dev->addr_len)
|
nla_put(skb, IFLA_ADDRESS, dev->addr_len, dev->dev_addr)) ||
|
||||||
NLA_PUT(skb, IFLA_ADDRESS, dev->addr_len, dev->dev_addr);
|
(dev->ifindex != dev->iflink &&
|
||||||
|
nla_put_u32(skb, IFLA_LINK, dev->iflink)) ||
|
||||||
if (dev->ifindex != dev->iflink)
|
(event == RTM_NEWLINK &&
|
||||||
NLA_PUT_U32(skb, IFLA_LINK, dev->iflink);
|
nla_put_u8(skb, IFLA_PROTINFO, port->state)))
|
||||||
|
goto nla_put_failure;
|
||||||
if (event == RTM_NEWLINK)
|
|
||||||
NLA_PUT_U8(skb, IFLA_PROTINFO, port->state);
|
|
||||||
|
|
||||||
return nlmsg_end(skb, nlh);
|
return nlmsg_end(skb, nlh);
|
||||||
|
|
||||||
nla_put_failure:
|
nla_put_failure:
|
||||||
|
Loading…
Reference in New Issue
Block a user