diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-06-02 18:23:40 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-06-02 18:23:47 +0200 |
commit | cb6ee9608e10029875389092140de65fa6a66714 (patch) | |
tree | 08e7cad4db694efb8079888c317f36975c7d96b6 /bridge.c | |
parent | 61a71e5e49c3be8b0846c63bee001ab34c4f4da7 (diff) | |
download | netifd-cb6ee9608e10029875389092140de65fa6a66714.tar.gz |
bridge: fix dynamic delete of hotplug vlans
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'bridge.c')
-rw-r--r-- | bridge.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -450,6 +450,7 @@ bridge_free_member(struct bridge_member *bm) bridge_remove_member(bm); +restart: vlist_for_each_element(&bst->dev.vlans, vlan, node) { struct bridge_vlan_hotplug_port *port, *tmp; bool free_port = false; @@ -468,6 +469,7 @@ bridge_free_member(struct bridge_member *bm) continue; vlist_delete(&bst->dev.vlans, &vlan->node); + goto restart; } device_lock(); @@ -697,9 +699,9 @@ bridge_hotplug_get_vlan(struct bridge_state *bst, unsigned int vid) vlan = calloc(1, sizeof(*vlan)); vlan->vid = vid; vlan->local = true; - vlan->node.version = -1; INIT_LIST_HEAD(&vlan->hotplug_ports); vlist_add(&bst->dev.vlans, &vlan->node, &vlan->vid); + vlan->node.version = -1; return vlan; } |