zebra: unlock if_table route_nodes

Must unlock if we break during iteration over any lib/table
tree.

Signed-off-by: Mark Stapp <mjs@cisco.com>
This commit is contained in:
Mark Stapp 2024-09-20 12:09:05 -04:00
parent aab2946088
commit c40635c5c2
2 changed files with 9 additions and 2 deletions

View File

@ -1799,14 +1799,18 @@ int netlink_tunneldump_read(struct zebra_ns *zns)
ret = netlink_request_tunneldump(zns, PF_BRIDGE, ret = netlink_request_tunneldump(zns, PF_BRIDGE,
tmp_if->ifindex); tmp_if->ifindex);
if (ret < 0) if (ret < 0) {
route_unlock_node(rn);
return ret; return ret;
}
ret = netlink_parse_info(netlink_link_change, netlink_cmd, ret = netlink_parse_info(netlink_link_change, netlink_cmd,
&dp_info, 0, true); &dp_info, 0, true);
if (ret < 0) if (ret < 0) {
route_unlock_node(rn);
return ret; return ret;
}
} }
return 0; return 0;

View File

@ -663,6 +663,7 @@ static int zebra_evpn_map_vlan_ns(struct ns *ns,
vni_id = zebra_vxlan_if_access_vlan_vni_find(zif, br_if); vni_id = zebra_vxlan_if_access_vlan_vni_find(zif, br_if);
if (vni_id) { if (vni_id) {
found = 1; found = 1;
route_unlock_node(rn);
break; break;
} }
} }
@ -757,6 +758,7 @@ static int zebra_evpn_from_svi_ns(struct ns *ns,
zebra_vxlan_if_access_vlan_vni_find(zif, br_if); zebra_vxlan_if_access_vlan_vni_find(zif, br_if);
if (vni_id) { if (vni_id) {
found = 1; found = 1;
route_unlock_node(rn);
break; break;
} }
} }
@ -842,6 +844,7 @@ static int zvni_map_to_macvlan_ns(struct ns *ns, void *_in_param, void **_p_ifp)
if (zif->link == in_param->svi_if) { if (zif->link == in_param->svi_if) {
*p_ifp = tmp_if; *p_ifp = tmp_if;
route_unlock_node(rn);
return NS_WALK_STOP; return NS_WALK_STOP;
} }
} }