bridge: Fix incorrect variable assignment on error path in br_sysfs_addbr
[deliverable/linux.git] / net / bridge / br_vlan.c
index 85e43af4af7a5b2956b149479725fce96c343439..9309bb4f2a5b240edcea6f9c3a4a45d2c6413874 100644 (file)
@@ -955,6 +955,13 @@ err_rhtbl:
  */
 int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags)
 {
+       struct switchdev_obj_port_vlan v = {
+               .obj.orig_dev = port->dev,
+               .obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN,
+               .flags = flags,
+               .vid_begin = vid,
+               .vid_end = vid,
+       };
        struct net_bridge_vlan *vlan;
        int ret;
 
@@ -962,6 +969,10 @@ int nbp_vlan_add(struct net_bridge_port *port, u16 vid, u16 flags)
 
        vlan = br_vlan_find(nbp_vlan_group(port), vid);
        if (vlan) {
+               /* Pass the flags to the hardware bridge */
+               ret = switchdev_port_obj_add(port->dev, &v.obj);
+               if (ret && ret != -EOPNOTSUPP)
+                       return ret;
                __vlan_add_flags(vlan, flags);
                return 0;
        }
This page took 0.025264 seconds and 5 git commands to generate.