From: Elad Raz <el...@mellanox.com>

Disallow adding interfaces to a bridge when vlan filtering operation
failed. Send the failure code to the user.

Signed-off-by: Elad Raz <el...@mellanox.com>
Signed-off-by: Jiri Pirko <j...@mellanox.com>
---
 net/bridge/br_if.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 8d1d4a2..3bd46f4 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -511,8 +511,10 @@ int br_add_if(struct net_bridge *br, struct net_device 
*dev)
        if (br_fdb_insert(br, p, dev->dev_addr, 0))
                netdev_err(dev, "failed insert local address bridge forwarding 
table\n");
 
-       if (nbp_vlan_init(p))
+       if (nbp_vlan_init(p)) {
                netdev_err(dev, "failed to initialize vlan filtering on this 
port\n");
+               goto err6;
+       }
 
        spin_lock_bh(&br->lock);
        changed_addr = br_stp_recalculate_bridge_id(br);
@@ -533,6 +535,12 @@ int br_add_if(struct net_bridge *br, struct net_device 
*dev)
 
        return 0;
 
+err6:
+       list_del_rcu(&p->list);
+       br_fdb_delete_by_port(br, p, 0, 1);
+       nbp_update_port_count(br);
+       netdev_upper_dev_unlink(dev, br->dev);
+
 err5:
        dev->priv_flags &= ~IFF_BRIDGE_PORT;
        netdev_rx_handler_unregister(dev);
-- 
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to