From: vivek Date: Fri, 11 Nov 2016 02:49:43 +0000 (-0800) Subject: zebra: Perform safe walk of RIB entries in rib_process() X-Git-Tag: frr-3.0-branchpoint~83^2~5 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=7b25dca6b7d599f5e885b21ed40dc0fb418c4bcc;p=mirror%2Ffrr.git zebra: Perform safe walk of RIB entries in rib_process() There is a scenario where a RIB entry is unlinked and freed during RIB processing. However, the walk of the entries is not being performed in a safe manner. Fix the code to do this correctly. Signed-off-by: Vivek Venkatraman Ticket: CM-13393 Reviewed By: Trivial Testing Done: Basic manual test --- diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index e48da0479b..59893b1a0f 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1633,7 +1633,7 @@ rib_process (struct route_node *rn) if (IS_ZEBRA_DEBUG_RIB_DETAILED) zlog_debug ("%u:%s/%d: Processing rn %p", vrf_id, buf, rn->p.prefixlen, rn); - RNODE_FOREACH_RIB (rn, rib) + RNODE_FOREACH_RIB_SAFE (rn, rib, next) { if (IS_ZEBRA_DEBUG_RIB_DETAILED) zlog_debug ("%u:%s/%d: Examine rib %p (type %d) status %x flags %x "