From ed74c8b5553300f22355d9efa7f0b317174ce71b Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sun, 10 Sep 2023 09:20:48 -0400 Subject: [PATCH] bgpd: bgp_cleanup_routes ensure dest is not freed The bgp_cleanup_routes function holds the lock for dest while walking it. Ensure that coverity understands this proposition. Signed-off-by: Donald Sharp --- bgpd/bgp_route.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index f769071185..e72ebe3ae7 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -6033,7 +6033,9 @@ void bgp_cleanup_routes(struct bgp *bgp) bgp_cleanup_table(bgp, table, safi); bgp_table_finish(&table); bgp_dest_set_bgp_table_info(dest, NULL); - bgp_dest_unlock_node(dest); + dest = bgp_dest_unlock_node(dest); + + assert(dest); } } safi = SAFI_ENCAP; @@ -6044,7 +6046,9 @@ void bgp_cleanup_routes(struct bgp *bgp) bgp_cleanup_table(bgp, table, safi); bgp_table_finish(&table); bgp_dest_set_bgp_table_info(dest, NULL); - bgp_dest_unlock_node(dest); + dest = bgp_dest_unlock_node(dest); + + assert(dest); } } } @@ -6056,7 +6060,9 @@ void bgp_cleanup_routes(struct bgp *bgp) bgp_cleanup_table(bgp, table, SAFI_EVPN); bgp_table_finish(&table); bgp_dest_set_bgp_table_info(dest, NULL); - bgp_dest_unlock_node(dest); + dest = bgp_dest_unlock_node(dest); + + assert(dest); } } } -- 2.39.5