]> git.proxmox.com Git - mirror_frr.git/commitdiff
bgpd: Peer events should be cleaned up on shutdown
authorDonald Sharp <sharpd@nvidia.com>
Wed, 30 Nov 2022 16:49:51 +0000 (11:49 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Mon, 5 Dec 2022 14:11:22 +0000 (09:11 -0500)
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 <sharpd@nvidia.com>
bgpd/bgpd.c

index e83ea2b460d679c69707c6ad8a2bb37bcba8b63e..992306773b41b0c5cc45ee095d12f1fcd4c18f60 100644 (file)
@@ -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));