From: Donald Sharp Date: Wed, 30 Nov 2022 16:49:51 +0000 (-0500) Subject: bgpd: Peer events should be cleaned up on shutdown X-Git-Tag: frr-8.5.1~258^2~3 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=e235185279e84dd3e0feb48145ceb3d8a83c1323;p=mirror_frr.git bgpd: Peer events should be cleaned up on shutdown Currently bgp does not stop any events that are on the thread system for execution on peer deletion. This is not good. Stop those events and prevent use after free's. Signed-off-by: Donald Sharp --- diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index e83ea2b46..992306773 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1127,6 +1127,7 @@ static void peer_free(struct peer *peer) bgp_timer_set(peer); bgp_reads_off(peer); bgp_writes_off(peer); + thread_cancel_event_ready(bm->master, peer); FOREACH_AFI_SAFI (afi, safi) THREAD_OFF(peer->t_revalidate_all[afi][safi]); assert(!peer->t_write); @@ -2492,6 +2493,7 @@ int peer_delete(struct peer *peer) bgp_keepalives_off(peer); bgp_reads_off(peer); bgp_writes_off(peer); + thread_cancel_event_ready(bm->master, peer); FOREACH_AFI_SAFI (afi, safi) THREAD_OFF(peer->t_revalidate_all[afi][safi]); assert(!CHECK_FLAG(peer->thread_flags, PEER_THREAD_WRITES_ON));