Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 61849dda authored by David S. Miller's avatar David S. Miller
Browse files

vlan: 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: default avatarDavid S. Miller <davem@davemloft.net>
parent 2eb812e6
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -166,11 +166,13 @@ static int vlan_fill_info(struct sk_buff *skb, const struct net_device *dev)
	struct nlattr *nest;
	unsigned int i;

	NLA_PUT_U16(skb, IFLA_VLAN_ID, vlan_dev_priv(dev)->vlan_id);
	if (nla_put_u16(skb, IFLA_VLAN_ID, vlan_dev_priv(dev)->vlan_id))
		goto nla_put_failure;
	if (vlan->flags) {
		f.flags = vlan->flags;
		f.mask  = ~0;
		NLA_PUT(skb, IFLA_VLAN_FLAGS, sizeof(f), &f);
		if (nla_put(skb, IFLA_VLAN_FLAGS, sizeof(f), &f))
			goto nla_put_failure;
	}
	if (vlan->nr_ingress_mappings) {
		nest = nla_nest_start(skb, IFLA_VLAN_INGRESS_QOS);
@@ -183,8 +185,9 @@ static int vlan_fill_info(struct sk_buff *skb, const struct net_device *dev)

			m.from = i;
			m.to   = vlan->ingress_priority_map[i];
			NLA_PUT(skb, IFLA_VLAN_QOS_MAPPING,
				sizeof(m), &m);
			if (nla_put(skb, IFLA_VLAN_QOS_MAPPING,
				    sizeof(m), &m))
				goto nla_put_failure;
		}
		nla_nest_end(skb, nest);
	}
@@ -202,8 +205,9 @@ static int vlan_fill_info(struct sk_buff *skb, const struct net_device *dev)

				m.from = pm->priority;
				m.to   = (pm->vlan_qos >> 13) & 0x7;
				NLA_PUT(skb, IFLA_VLAN_QOS_MAPPING,
					sizeof(m), &m);
				if (nla_put(skb, IFLA_VLAN_QOS_MAPPING,
					    sizeof(m), &m))
					goto nla_put_failure;
			}
		}
		nla_nest_end(skb, nest);