diff options
Diffstat (limited to 'bgpd/bgp_advertise.c')
| -rw-r--r-- | bgpd/bgp_advertise.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/bgpd/bgp_advertise.c b/bgpd/bgp_advertise.c index da7b496d65..c215611edf 100644 --- a/bgpd/bgp_advertise.c +++ b/bgpd/bgp_advertise.c @@ -188,11 +188,11 @@ void bgp_adj_in_set(struct bgp_dest *dest, struct peer *peer, struct attr *attr,  	bgp_dest_lock_node(dest);  } -void bgp_adj_in_remove(struct bgp_dest *dest, struct bgp_adj_in *bai) +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); +	BGP_ADJ_IN_DEL(*dest, bai); +	*dest = bgp_dest_unlock_node(*dest);  	peer_unlock(bai->peer); /* adj_in peer reference */  	XFREE(MTYPE_BGP_ADJ_IN, bai);  } @@ -212,9 +212,11 @@ bool bgp_adj_in_unset(struct bgp_dest *dest, struct peer *peer,  		adj_next = adj->next;  		if (adj->peer == peer && adj->addpath_rx_id == addpath_id) -			bgp_adj_in_remove(dest, adj); +			bgp_adj_in_remove(&dest, adj);  		adj = adj_next; + +		assert(dest);  	}  	return true;  | 
