From eb6b38854f0591c853e27d41392fa0d047705eeb Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Fri, 9 Oct 2020 15:14:58 +0300 Subject: rip(ng)d: fix interfaces cleaning rip(ng)d_instance_disable unlinks the vrf from the instance which means that rip(ng)_interfaces_clean never works, because rip(ng)->vrf is always NULL there. This leads to the crash #6477. Clean interfaces before disabling the instance to fix the issue. Signed-off-by: Igor Ryzhov --- ripd/ripd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ripd') diff --git a/ripd/ripd.c b/ripd/ripd.c index bcf73e8f8..389a54f22 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -3422,6 +3422,8 @@ static void rip_distribute_update_all_wrapper(struct access_list *notused) /* Delete all added rip route. */ void rip_clean(struct rip *rip) { + rip_interfaces_clean(rip); + if (rip->enabled) rip_instance_disable(rip); @@ -3443,7 +3445,6 @@ void rip_clean(struct rip *rip) route_table_finish(rip->enable_network); vector_free(rip->passive_nondefault); list_delete(&rip->offset_list_master); - rip_interfaces_clean(rip); route_table_finish(rip->distance_table); RB_REMOVE(rip_instance_head, &rip_instances, rip); -- cgit v1.2.3