]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fix route node unlock when clearing adj-out
authorvivek <vivek@cumulusnetworks.com>
Fri, 2 Dec 2016 13:22:21 +0000 (08:22 -0500)
committerDavid Lamparter <equinox@opensourcerouting.org>
Fri, 2 Dec 2016 15:59:02 +0000 (16:59 +0100)
When clearing the adj-out for a subgroup (e.g., upon peer going down),
ensure that the adj-out is removed before unlocking the route node that
it points to, otherwise, there is a possibility that the route node may
be prematurely freed.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Ticket: CM-13690
Reviewed By: None
Testing Done: bgp-smoke, resilient-hash tests

(cherry picked from commit c3d7d35f3b7152c9e50e52c3cfd60b0dc52df703)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
bgpd/bgp_updgrp_adv.c

index c485e61e5cf4af211d49b5e10d65ce1b1c837a65..a95a11b620d4d85251b766a5ce5f16e79600a1dc 100644 (file)
@@ -573,8 +573,8 @@ subgroup_clear_table (struct update_subgroup *subgrp)
 
   SUBGRP_FOREACH_ADJ_SAFE (subgrp, aout, taout)
   {
-    bgp_unlock_node (aout->rn);
     bgp_adj_out_remove_subgroup (aout->rn, aout, subgrp);
+    bgp_unlock_node (aout->rn);
   }
 }