mirror_frr/zebra
Pooja Jagadeesh Doijode e24c799138 zebra: Fix for heap-use-after-free in EVPN
Issue:
When a netns is deleted, since zebra doesn’t receive interface down/delete
notifications from kernel, it manually deletes the interface without removing
the association between zebra_l3vni and the interface that is being deleted
(i.e it deletes the interface without setting “zl3vni->vxlan_if” to NULL).

Later, during the deletion of netns, when zl3vni_rmac_uninstall() is called to
uninstall the remote RMAC from the kernel, zebra ends up accessing stale
“zl3vni->vxlan_if” pointer, which now points to freed memory.
This was causing heap use-after-free.

Fix:
Before zebra starts deleting the interfaces when it receives netns delete notification,
appropriate functions() are being called to remove the association between evpn structs
and interface and set “zl3vni->vxlan_if” to NULL. This ensures that when
zl3vni_rmac_uninstall() is called during netns deletion, it will bail because
“zl3vni->vxlan_if” is NULL.

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
(cherry picked from commit 7eefea98ba)
2023-03-21 11:05:09 +00:00
..
dpdk build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
.gitignore
connected.c Revert "Merge pull request #11127 from louis-6wind/bgp-leak" 2023-01-13 08:13:52 -05:00
connected.h lib,zebra: use more const 2021-09-14 10:31:45 -04:00
debug_nl.c zebra: add tc netlink and dplane ops 2022-08-11 02:32:43 +08:00
debug.c zebra: fix flags used for debug dpdk 2022-12-13 17:02:29 -05:00
debug.h zebra: fix flags used for debug dpdk 2022-12-13 17:02:29 -05:00
dplane_fpm_nl.c zebra: use typesafe lib lists in zebra dplane 2023-01-23 08:55:44 -05:00
if_ioctl.c zebra: changes for code maintainability 2022-09-15 14:18:48 +05:30
if_netlink.c zebra: Add debug for bridge capability 2023-02-16 19:46:39 +00:00
if_netlink.h zebra: netlink rtm tunnel msg parsing 2022-06-24 07:33:34 -04:00
if_socket.c zebra: Add a mpls enable interface node command 2022-08-08 09:15:22 -04:00
if_sysctl.c zebra: changes for code maintainability 2022-09-15 14:18:48 +05:30
interface.c zebra: fix possible null dereference 2023-01-19 10:32:18 -03:00
interface.h zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
ioctl.c zebra: Attempt to make ioctl.c have a bit more useful log messges 2022-06-15 10:34:30 -04:00
ioctl.h *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
ipforward_proc.c
ipforward_sysctl.c *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
ipforward.h
irdp_interface.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
irdp_main.c zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04:00
irdp_packet.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
irdp.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
kernel_netlink.c zebra: use typesafe lib lists in zebra dplane 2023-01-23 08:55:44 -05:00
kernel_netlink.h zebra: new netlink parse utility for rta 2022-05-16 10:45:14 -07:00
kernel_socket.c zebra: use typesafe lib lists in zebra dplane 2023-01-23 08:55:44 -05:00
kernel_socket.h
label_manager.c Merge pull request #7756 from pjdruddy/bgplu-fixes 2021-01-09 15:48:22 -05:00
label_manager.h zebra: expose label-manager util-funcs 2021-01-05 18:19:44 +00:00
main.c zebra: Ensure memory is not freed that dplane depends on in shutdown 2022-12-17 14:09:29 -05:00
Makefile
netconf_netlink.c zebra/netconf_netlink.c: fix build without AF_MPLS 2022-11-08 18:48:41 +01:00
netconf_netlink.h zebra: Add a mpls enable interface node command 2022-08-08 09:15:22 -04:00
redistribute.c zebra: Create a zebra_rib_route_entry_new function and use it 2022-08-17 16:04:50 -04:00
redistribute.h zebra: Fix redistribute.h up to our standards 2022-01-18 08:39:40 -05:00
rib.h zebra: Fix handling of recursive routes when processing closely in time 2022-10-26 15:06:23 -04:00
router-id.c lib, zebra, pimd: clean up/fix VRF DECLVAR macros 2022-04-28 11:09:26 +02:00
router-id.h zebra: add IPv6 router-id 2020-07-17 17:39:05 +02:00
rt_netlink.c zebra_fpm: Add support for other protocols in fpm:netlink 2023-01-24 09:48:21 +05:30
rt_netlink.h zebra_fpm: Add support for other protocols in fpm:netlink 2023-01-24 09:48:21 +05:30
rt_socket.c zebra: Do not complain if deletion fails 2022-03-19 07:44:54 -04:00
rt.h zebra: use typesafe lib lists in zebra dplane 2023-01-23 08:55:44 -05:00
rtadv.c zebra: Notice Optional Router Advertisement types that are not handled 2022-12-17 16:32:13 -05:00
rtadv.h zebra: Notice Optional Router Advertisement types that are not handled 2022-12-17 16:32:13 -05:00
rtread_netlink.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
rtread_sysctl.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
rule_netlink.c zebra: Add tracepoint for netlink_rule_change 2022-04-20 09:43:47 -04:00
rule_netlink.h zebra: netlink message batching 2020-08-10 21:42:43 +02:00
rule_socket.c zebra: convert ip rule installation to use dplane thread 2020-06-10 16:18:45 +02:00
sample_plugin.c *: require semicolon after FRR_DAEMON_INFO & co. 2021-03-17 06:18:39 +01:00
subdir.am zebra: traffic control state management 2022-11-22 22:35:35 +08:00
table_manager.c zebra, ospf6d: Do not check if NULL for XCALLOC() 2022-05-08 15:43:21 +03:00
table_manager.h zebra: extend table manager per vrf, add vty configuration 2021-09-21 18:37:30 +02:00
tc_netlink.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
tc_netlink.h zebra: traffic control state management 2022-11-22 22:35:35 +08:00
tc_socket.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
testrib.conf
zapi_msg.c zebra: Send nexthop ifindex for type NEXTHOP_TYPE_IPV6 2023-03-02 06:11:16 +00:00
zapi_msg.h zebra: name the route_entry opaque struct more specifically 2022-01-31 08:50:50 -05:00
zebra_dplane.c zebra: fix SA warning, don't lock plugin list 2023-01-25 08:38:47 -05:00
zebra_dplane.h zebra: use typesafe lib lists in zebra dplane 2023-01-23 08:55:44 -05:00
zebra_errors.c zebra: add support for protodown reason code 2022-03-09 17:52:44 -05:00
zebra_errors.h zebra: add support for protodown reason code 2022-03-09 17:52:44 -05:00
zebra_evpn_mac.c zebra: Evpn mac vni detail show command 2023-01-03 15:17:58 -08:00
zebra_evpn_mac.h bgpd,zebra,lib: bgp evpn vni macip into two tables 2022-10-11 16:18:21 -04:00
zebra_evpn_mh.c zebra: relax if_type check to allow early ES config creation 2022-11-10 12:43:23 -05:00
zebra_evpn_mh.h bgpd,zebra: correct one debug log for evpn-mh 2022-05-12 02:19:51 -04:00
zebra_evpn_neigh.c zebra: use "get" naming for bgp accept lower knob 2022-11-01 14:09:15 -04:00
zebra_evpn_neigh.h bgpd,zebra,lib: bgp evpn vni macip into two tables 2022-10-11 16:18:21 -04:00
zebra_evpn_vxlan.h *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_evpn.c zebra: add some neigh del not found debugs 2022-10-11 16:18:21 -04:00
zebra_evpn.h zebra: Convert to struct zebra_vtep as per our internal standard 2021-09-02 10:33:22 -04:00
zebra_fpm_dt.c zebra: replace inet_ntoa 2020-10-22 13:37:25 -04:00
zebra_fpm_netlink.c zebra_fpm: Add support for other protocols in fpm:netlink 2023-01-24 09:48:21 +05:30
zebra_fpm_private.h zebra: Fix IPv4 routes with IPv6 link local next hops install in FPM 2021-09-13 08:39:43 -07:00
zebra_fpm_protobuf.c
zebra_fpm.c zebra: Remove duplicate updation of msg_type 2022-10-29 23:25:03 +05:30
zebra_gr.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_l2.c *: cleanup ifp->vrf_id 2021-11-22 20:47:23 +03:00
zebra_l2.h zebra: clean up rtadv integration 2022-05-21 14:14:01 +02:00
zebra_mlag_private.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_mlag_vty.c build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
zebra_mlag_vty.h
zebra_mlag.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_mlag.h *: require semicolon after DEFINE_HOOK & co. 2021-03-17 06:18:17 +01:00
zebra_mpls_netlink.c zebra: dplane FPM handle LSP install/update/delete 2020-11-27 16:32:01 +00:00
zebra_mpls_null.c
zebra_mpls_openbsd.c zebra: Convert to struct zebra_nhlfe as per our internal standard 2021-09-02 10:33:23 -04:00
zebra_mpls_vty.c *: Properly use memset() when zeroing 2022-05-11 14:08:47 +03:00
zebra_mpls.c lib, tests, zebra: Remove unused workqueue error function 2022-12-15 11:15:33 -05:00
zebra_mpls.h zebra: Convert label processing to Meta-Q 2022-08-17 10:44:33 -04:00
zebra_mroute.c zebra, pimd: Add a field family in the message ZEBRA_IPMR_ROUTE_STATS 2022-04-28 01:10:49 -07:00
zebra_mroute.h zebra: Modify base code to get ipv6 stats from kernel 2022-04-28 01:10:49 -07:00
zebra_nb_config.c zebra: remove one unnecessary check for l3vni nb 2022-05-20 03:11:27 -04:00
zebra_nb_rpcs.c zebra: display rpc error msg to vtysh 2020-10-05 13:57:54 -07:00
zebra_nb_state.c *: Avoid casting to the same type as on the left 2022-05-08 16:07:42 +03:00
zebra_nb.c zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_nb.h zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_neigh.c zebra: free neighbor state before exit to avoid memleaks 2022-07-14 12:20:01 -04:00
zebra_neigh.h zebra: add support for maintaining local neigh entries 2022-06-27 07:56:55 -04:00
zebra_netns_id.c *: introduce function for sequence numbers 2023-01-20 15:40:28 -03:00
zebra_netns_id.h zebra: dynamically detect vxlan link interfaces in other netns 2020-09-11 18:26:23 +02:00
zebra_netns_notify.c zebra: Fix for heap-use-after-free in EVPN 2023-03-21 11:05:09 +00:00
zebra_netns_notify.h
zebra_nhg_private.h
zebra_nhg.c zebra: i declaration shadows other i declared 2023-01-26 11:40:33 -05:00
zebra_nhg.h lib, zebra: Add ability to encode/decode resilient nhg's 2022-11-04 13:29:36 -04:00
zebra_ns.c zebra: Cleanup use after free in shutdown 2022-12-05 08:49:57 -05:00
zebra_ns.h zebra: Make netlink buffer reads resizeable when needed 2022-02-08 17:28:19 -05:00
zebra_opaque.c *: frr_with_mutex change to follow our standard 2022-07-20 15:50:32 -04:00
zebra_opaque.h zebra: add zebra opaque module 2020-06-02 08:20:54 -04:00
zebra_pbr.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_pbr.h zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_ptm_redistribute.c zebra: kill zebra_memory.h, use MTYPE_STATIC 2021-03-22 20:02:17 +01:00
zebra_ptm_redistribute.h
zebra_ptm.c zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04:00
zebra_ptm.h zebra: send BFD messages to staticd 2023-01-13 15:32:12 -03:00
zebra_pw.c zebra: Fix crash in shutdown w/ pw thread still running 2022-08-11 16:31:28 -04:00
zebra_pw.h *: use FRR interface name definition everywhere 2022-05-02 13:00:12 -03:00
zebra_rib.c zebra: Fix other table inactive when ip import-table is on 2023-02-21 16:38:22 +00:00
zebra_rnh.c zebra: fix JSON fields for "show ip/ipv6 nht" 2023-01-24 18:15:36 -08:00
zebra_rnh.h zebra: fix JSON fields for "show ip/ipv6 nht" 2023-01-24 18:15:36 -08:00
zebra_routemap_nb_config.c zebra: remove checks for src address existence when using "set src" 2021-08-02 18:35:30 +03:00
zebra_routemap_nb.c *: make sure config.h or zebra.h is first 2021-04-23 12:06:35 +02:00
zebra_routemap_nb.h zebra: North-bound implementation for zebra rmaps 2021-03-30 22:58:42 +03:00
zebra_routemap.c zebra: json support for show ip nht route-map 2022-12-16 08:42:53 -08:00
zebra_routemap.h zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_router.c zebra: Add zrouter.asic_notification_nexthop_control 2022-12-12 10:44:57 -05:00
zebra_router.h zebra: Add zrouter.asic_notification_nexthop_control 2022-12-12 10:44:57 -05:00
zebra_script.c zebra: Replace TC definitions for dplane 2022-11-23 17:35:33 +02:00
zebra_script.h zebra: Add encoders/decoders for zebra 2021-10-20 00:56:00 +08:00
zebra_snmp.c build: make builddir include path consistent 2021-04-21 15:42:33 +02:00
zebra_srte.c zebra: Fix use-after-free issue in srte cleanup 2022-11-18 13:19:14 +01:00
zebra_srte.h zebra: upon srte leave, flush sr policies 2022-10-19 08:40:01 +02:00
zebra_srv6_vty.c zebra: Add missing newline in SRv6 config write 2022-12-05 10:22:06 +01:00
zebra_srv6_vty.h zebra: add default SRv6 Function length 2022-10-07 11:34:20 +09:00
zebra_srv6.c zebra: Add helpers to notify locator add/delete 2022-11-08 22:44:23 +01:00
zebra_srv6.h zebra: Add helpers to notify locator add/delete 2022-11-08 22:44:23 +01:00
zebra_tc.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_tc.h zebra: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_trace.c zebra: Add initial zebra tracepoint support 2022-04-20 09:39:47 -04:00
zebra_trace.h zebra: Fix tracepoint changes for lttng 2022-11-26 09:30:48 -05:00
zebra_vrf.c zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_vrf.h zebra: clean up rtadv integration 2022-05-21 14:14:01 +02:00
zebra_vty.c zebra: fix JSON fields for "show ip/ipv6 nht" 2023-01-24 18:15:36 -08:00
zebra_vxlan_private.h zebra: Convert to struct zebra_l3nvi as per our internal standard 2021-09-02 10:33:22 -04:00
zebra_vxlan.c zebra: fix wrong conversion for evpn advertising 2023-01-20 09:47:46 +08:00
zebra_vxlan.h zebra: Evpn mac vni detail show command 2023-01-03 15:17:58 -08:00
zserv.c zebra: do not load/store wider-than-ptr atomics 2023-01-06 16:59:02 +01:00
zserv.h zebra: do not load/store wider-than-ptr atomics 2023-01-06 16:59:02 +01:00