]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Clean back pointer upon deletion
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 2 Aug 2017 16:10:50 +0000 (12:10 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 2 Aug 2017 16:14:11 +0000 (12:14 -0400)
The channel_oil has a back pointer(up) to the upstream data structure.
If we are planning on keeping the channel oil (due to ref count issues)
longer than keeping the upstream, when we delete the upstream we were
not clearing the back pointer to up.  This would result in a situation
where if that memory has started to be used again it will cause a
crash and other fun things.

Ticket: CM-17092
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_upstream.c

index a8506501e50e5da3c85960999227c8635318169f..95d1a840ff8eed0347f5d89716c45e035f2ecaf7 100644 (file)
@@ -153,6 +153,7 @@ static void upstream_channel_oil_detach(struct pim_upstream *up)
                /* Detaching from channel_oil, channel_oil may exist post del,
                   but upstream would not keep reference of it
                 */
+               up->channel_oil->up = NULL;
                pim_channel_oil_del(up->channel_oil);
                up->channel_oil = NULL;
        }