• Ido Schimmel's avatar
    mlxsw: spectrum_switchdev: Do not leak RIFs when removing bridge · 602b74ed
    Ido Schimmel authored
    When a bridge device is removed, the VLANs are flushed from each
    configured port. This causes the ports to decrement the reference count
    on the associated FIDs (filtering identifier). If the reference count of
    a FID is 1 and it has a RIF (router interface), then this RIF is
    destroyed.
    
    However, if no port is member in the VLAN for which a RIF exists, then
    the RIF will continue to exist after the removal of the bridge. To
    reproduce:
    
    # ip link add name br0 type bridge vlan_filtering 1
    # ip link set dev swp1 master br0
    # ip link add link br0 name br0.10 type vlan id 10
    # ip address add 192.0.2.0/24 dev br0.10
    # ip link del dev br0
    
    The RIF associated with br0.10 continues to exist.
    
    Fix this by iterating over all the bridge device uppers when it is
    destroyed and take care of destroying their RIFs.
    
    Fixes: 99f44bb3 ("mlxsw: spectrum: Enable L3 interfaces on top of bridge devices")
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Reviewed-by: default avatarPetr Machata <petrm@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    602b74ed
spectrum_switchdev.c 66.1 KB