|
@@ -651,15 +651,7 @@ int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
|
|
|
|
|
int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
|
int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val)
|
|
{
|
|
{
|
|
- int err;
|
|
|
|
-
|
|
|
|
- if (!rtnl_trylock())
|
|
|
|
- return restart_syscall();
|
|
|
|
-
|
|
|
|
- err = __br_vlan_filter_toggle(br, val);
|
|
|
|
- rtnl_unlock();
|
|
|
|
-
|
|
|
|
- return err;
|
|
|
|
|
|
+ return __br_vlan_filter_toggle(br, val);
|
|
}
|
|
}
|
|
|
|
|
|
int __br_vlan_set_proto(struct net_bridge *br, __be16 proto)
|
|
int __br_vlan_set_proto(struct net_bridge *br, __be16 proto)
|
|
@@ -713,18 +705,10 @@ err_filt:
|
|
|
|
|
|
int br_vlan_set_proto(struct net_bridge *br, unsigned long val)
|
|
int br_vlan_set_proto(struct net_bridge *br, unsigned long val)
|
|
{
|
|
{
|
|
- int err;
|
|
|
|
-
|
|
|
|
if (val != ETH_P_8021Q && val != ETH_P_8021AD)
|
|
if (val != ETH_P_8021Q && val != ETH_P_8021AD)
|
|
return -EPROTONOSUPPORT;
|
|
return -EPROTONOSUPPORT;
|
|
|
|
|
|
- if (!rtnl_trylock())
|
|
|
|
- return restart_syscall();
|
|
|
|
-
|
|
|
|
- err = __br_vlan_set_proto(br, htons(val));
|
|
|
|
- rtnl_unlock();
|
|
|
|
-
|
|
|
|
- return err;
|
|
|
|
|
|
+ return __br_vlan_set_proto(br, htons(val));
|
|
}
|
|
}
|
|
|
|
|
|
static bool vlan_default_pvid(struct net_bridge_vlan_group *vg, u16 vid)
|
|
static bool vlan_default_pvid(struct net_bridge_vlan_group *vg, u16 vid)
|
|
@@ -855,21 +839,17 @@ int br_vlan_set_default_pvid(struct net_bridge *br, unsigned long val)
|
|
if (val >= VLAN_VID_MASK)
|
|
if (val >= VLAN_VID_MASK)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- if (!rtnl_trylock())
|
|
|
|
- return restart_syscall();
|
|
|
|
-
|
|
|
|
if (pvid == br->default_pvid)
|
|
if (pvid == br->default_pvid)
|
|
- goto unlock;
|
|
|
|
|
|
+ goto out;
|
|
|
|
|
|
/* Only allow default pvid change when filtering is disabled */
|
|
/* Only allow default pvid change when filtering is disabled */
|
|
if (br->vlan_enabled) {
|
|
if (br->vlan_enabled) {
|
|
pr_info_once("Please disable vlan filtering to change default_pvid\n");
|
|
pr_info_once("Please disable vlan filtering to change default_pvid\n");
|
|
err = -EPERM;
|
|
err = -EPERM;
|
|
- goto unlock;
|
|
|
|
|
|
+ goto out;
|
|
}
|
|
}
|
|
err = __br_vlan_set_default_pvid(br, pvid);
|
|
err = __br_vlan_set_default_pvid(br, pvid);
|
|
-unlock:
|
|
|
|
- rtnl_unlock();
|
|
|
|
|
|
+out:
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|