mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
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: 07b5b17e15
("[VLAN]: Use rtnl_link API")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9bbd917e0b
commit
eb8ef2a3c5
@@ -108,11 +108,13 @@ static int vlan_changelink(struct net_device *dev, struct nlattr *tb[],
|
|||||||
struct ifla_vlan_flags *flags;
|
struct ifla_vlan_flags *flags;
|
||||||
struct ifla_vlan_qos_mapping *m;
|
struct ifla_vlan_qos_mapping *m;
|
||||||
struct nlattr *attr;
|
struct nlattr *attr;
|
||||||
int rem;
|
int rem, err;
|
||||||
|
|
||||||
if (data[IFLA_VLAN_FLAGS]) {
|
if (data[IFLA_VLAN_FLAGS]) {
|
||||||
flags = nla_data(data[IFLA_VLAN_FLAGS]);
|
flags = nla_data(data[IFLA_VLAN_FLAGS]);
|
||||||
vlan_dev_change_flags(dev, flags->flags, flags->mask);
|
err = vlan_dev_change_flags(dev, flags->flags, flags->mask);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
if (data[IFLA_VLAN_INGRESS_QOS]) {
|
if (data[IFLA_VLAN_INGRESS_QOS]) {
|
||||||
nla_for_each_nested(attr, data[IFLA_VLAN_INGRESS_QOS], rem) {
|
nla_for_each_nested(attr, data[IFLA_VLAN_INGRESS_QOS], rem) {
|
||||||
@@ -123,7 +125,9 @@ static int vlan_changelink(struct net_device *dev, struct nlattr *tb[],
|
|||||||
if (data[IFLA_VLAN_EGRESS_QOS]) {
|
if (data[IFLA_VLAN_EGRESS_QOS]) {
|
||||||
nla_for_each_nested(attr, data[IFLA_VLAN_EGRESS_QOS], rem) {
|
nla_for_each_nested(attr, data[IFLA_VLAN_EGRESS_QOS], rem) {
|
||||||
m = nla_data(attr);
|
m = nla_data(attr);
|
||||||
vlan_dev_set_egress_priority(dev, m->from, m->to);
|
err = vlan_dev_set_egress_priority(dev, m->from, m->to);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user