bgpd: Call bgp_dest_unlock_node() inside bgp_adj_in_remove()

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
Donatas Abraitis 2021-06-11 09:17:05 +03:00
parent c20270787c
commit 6a840fd93f
2 changed files with 4 additions and 9 deletions

View File

@ -205,6 +205,7 @@ void bgp_adj_in_remove(struct bgp_dest *dest, struct bgp_adj_in *bai)
{
bgp_attr_unintern(&bai->attr);
BGP_ADJ_IN_DEL(dest, bai);
bgp_dest_unlock_node(dest);
peer_unlock(bai->peer); /* adj_in peer reference */
XFREE(MTYPE_BGP_ADJ_IN, bai);
}
@ -223,10 +224,8 @@ bool bgp_adj_in_unset(struct bgp_dest *dest, struct peer *peer,
while (adj) {
adj_next = adj->next;
if (adj->peer == peer && adj->addpath_rx_id == addpath_id) {
if (adj->peer == peer && adj->addpath_rx_id == addpath_id)
bgp_adj_in_remove(dest, adj);
bgp_dest_unlock_node(dest);
}
adj = adj_next;
}

View File

@ -4826,10 +4826,8 @@ static void bgp_clear_route_table(struct peer *peer, afi_t afi, safi_t safi,
while (ain) {
ain_next = ain->next;
if (ain->peer == peer) {
if (ain->peer == peer)
bgp_adj_in_remove(dest, ain);
bgp_dest_unlock_node(dest);
}
ain = ain_next;
}
@ -4935,10 +4933,8 @@ void bgp_clear_adj_in(struct peer *peer, afi_t afi, safi_t safi)
while (ain) {
ain_next = ain->next;
if (ain->peer == peer) {
if (ain->peer == peer)
bgp_adj_in_remove(dest, ain);
bgp_dest_unlock_node(dest);
}
ain = ain_next;
}