From f2c31acb6f97688af0f368211536829324145919 Mon Sep 17 00:00:00 2001 From: Paul Jakma Date: Thu, 22 Feb 2007 17:48:42 +0000 Subject: [bgpd] Peer delete can race with reconfig leading to crash 2007-02-22 Paul Jakma * bgp_fsm.c: (bgp_fsm_change_status) Handle state change into clearing or greater here. Simpler. (bgp_event) Clearing state change work moved to previous * bgp_route.c: (bgp_clear_route_node) Clearing adj-in here is too late, as it leaves a race between a peer being deleted and an identical peer being configured before clearing completes, leading to a crash. Simplest fix is to clean peers Adj-in up-front, rather than queueing such work. (bgp_clear_route_table) Clear peer's Adj-In and Adj-Out up-front here, rather than queueing such work. Extensive comment added on the various bits of indexed data that exist and how they need to be dealt with. (bgp_clear_route) Update comment. --- bgpd/ChangeLog | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'bgpd/ChangeLog') diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index 257b0eeb..7e964c95 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,20 @@ +2007-02-22 Paul Jakma + + * bgp_fsm.c: (bgp_fsm_change_status) Handle state change into + clearing or greater here. Simpler. + (bgp_event) Clearing state change work moved to previous + * bgp_route.c: (bgp_clear_route_node) Clearing adj-in here + is too late, as it leaves a race between a peer being deleted + and an identical peer being configured before clearing + completes, leading to a crash. + Simplest fix is to clean peers Adj-in up-front, rather than + queueing such work. + (bgp_clear_route_table) Clear peer's Adj-In and Adj-Out + up-front here, rather than queueing such work. + Extensive comment added on the various bits of indexed data + that exist and how they need to be dealt with. + (bgp_clear_route) Update comment. + 2006-12-12 Andrew J. Schorr * bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete) -- cgit v1.2.1