From: Louis Scalbert Date: Tue, 20 Feb 2024 16:49:01 +0000 (+0100) Subject: zebra: fix crash if macvlan link in another netns X-Git-Tag: docker/9.0.3~26^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=669388b206b0e1915e1ed8d3f2f829e482ebe7ce;p=matthieu%2Ffrr.git zebra: fix crash if macvlan link in another netns A macvlan interface can have its underlying link-interface in another namespace (aka. netns). However, by default, zebra does not know the interface from the other namespaces. It results in a crash the pointer to the link interface is NULL. > 6 0x0000559d77a329d3 in zebra_vxlan_macvlan_up (ifp=0x559d798b8e00) at /root/frr/zebra/zebra_vxlan.c:4676 > 4676 link_zif = link_ifp->info; > (gdb) list > 4671 struct interface *link_ifp, *link_if; > 4672 > 4673 zif = ifp->info; > 4674 assert(zif); > 4675 link_ifp = zif->link; > 4676 link_zif = link_ifp->info; > 4677 assert(link_zif); > 4678 > (gdb) p zif->link > $2 = (struct interface *) 0x0 > (gdb) p zif->link_ifindex > $3 = 15 Fix the crash by returning when the macvlan link-interface is in another namespace. No need to go further because any vxlan under the macvlan interface would not be accessible by zebra. Link: https://github.com/FRRouting/frr/issues/15370 Signed-off-by: Louis Scalbert (cherry picked from commit 44e6e3868d7a1488447f2be446dbd7cb5a5559ce) --- diff --git a/zebra/zebra_vxlan.c b/zebra/zebra_vxlan.c index 132862e690..3e6fb36376 100644 --- a/zebra/zebra_vxlan.c +++ b/zebra/zebra_vxlan.c @@ -5098,6 +5098,11 @@ void zebra_vxlan_macvlan_up(struct interface *ifp) zif = ifp->info; assert(zif); + + if (zif->link_nsid) + /* the link interface is another namespace */ + return; + link_ifp = zif->link; link_zif = link_ifp->info; assert(link_zif);