Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

vlan: vlan_changelink() should propagate errors

Both vlan_dev_change_flags() and vlan_dev_set_egress_priority()
can return an error. vlan_changelink() should not ignore them.

Fixes: 07b5b17e157b ("[VLAN]: Use rtnl_link API")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Eric Dumazet and committed by
David S. Miller
eb8ef2a3 9bbd917e

+7 -3
+7 -3
net/8021q/vlan_netlink.c
··· 108 108 struct ifla_vlan_flags *flags; 109 109 struct ifla_vlan_qos_mapping *m; 110 110 struct nlattr *attr; 111 - int rem; 111 + int rem, err; 112 112 113 113 if (data[IFLA_VLAN_FLAGS]) { 114 114 flags = nla_data(data[IFLA_VLAN_FLAGS]); 115 - vlan_dev_change_flags(dev, flags->flags, flags->mask); 115 + err = vlan_dev_change_flags(dev, flags->flags, flags->mask); 116 + if (err) 117 + return err; 116 118 } 117 119 if (data[IFLA_VLAN_INGRESS_QOS]) { 118 120 nla_for_each_nested(attr, data[IFLA_VLAN_INGRESS_QOS], rem) { ··· 125 123 if (data[IFLA_VLAN_EGRESS_QOS]) { 126 124 nla_for_each_nested(attr, data[IFLA_VLAN_EGRESS_QOS], rem) { 127 125 m = nla_data(attr); 128 - vlan_dev_set_egress_priority(dev, m->from, m->to); 126 + err = vlan_dev_set_egress_priority(dev, m->from, m->to); 127 + if (err) 128 + return err; 129 129 } 130 130 } 131 131 return 0;