OpenCloudOS-Kernel/drivers/net/ethernet/mellanox/mlxsw
Petr Machata 09dbf6297f mlxsw: spectrum_router: Update nexthop RIF on update
The function mlxsw_sp_nexthop_rif_update() walks the list of nexthops
associated with a RIF, and updates the corresponding entries in the
switch. It is used in particular when a tunnel underlay netdevice moves
to a different VRF, and all the nexthops are migrated over to a new RIF.
The problem is that each nexthop holds a reference to its RIF, and that
is not updated. So after the old RIF is gone, further activity on these
nexthops (such as downing the underlay netdevice) dereferences a
dangling pointer.

Fix the issue by updating rif of impacted nexthops before calling
mlxsw_sp_nexthop_rif_update().

Fixes: 0c5f1cd5ba ("mlxsw: spectrum_router: Generalize __mlxsw_sp_ipip_entry_update_tunnel()")
Signed-off-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-11-28 09:55:48 -05:00
..
Kconfig mlxsw: spectrum_router: Add support for IPv6 routes addition / deletion 2017-08-03 15:36:00 -07:00
Makefile mlxsw: spectrum: Support RED qdisc offload 2017-11-08 12:23:38 +09:00
cmd.h mlxsw: pci: Remove unused bit 2017-03-08 23:17:38 -08:00
core.c mlxsw: core: Fix possible deadlock 2017-10-18 12:19:15 +01:00
core.h mlxsw: core: Create the mlxsw_fw_rev struct 2017-05-25 17:46:17 -04:00
core_acl_flex_actions.c mlxsw: acl: Introduce ACL trap and forward action 2017-10-03 10:06:30 -07:00
core_acl_flex_actions.h mlxsw: acl: Introduce ACL trap and forward action 2017-10-03 10:06:30 -07:00
core_acl_flex_keys.c mlxsw: core: Introduce flexible keys support 2017-02-03 16:35:41 -05:00
core_acl_flex_keys.h mlxsw: acl: Add ip tos acl element 2017-07-17 09:18:23 -07:00
core_hwmon.c mlxsw: core: Zero payload buffers for couple of registers 2016-10-30 16:50:17 -04:00
core_thermal.c mlxsw: core: Implement thermal zone 2016-11-22 10:04:19 -05:00
emad.h mlxsw: Add interface to access registers and process events 2015-07-30 00:05:00 -07:00
i2c.c mlxsw: i2c: Fix buffer increment counter for write transaction 2017-11-01 20:40:58 +09:00
i2c.h mlxsw: Introduce support for I2C bus 2016-11-16 23:29:04 -05:00
ib.h mlxsw: switchx2: Add IB port support 2016-10-30 16:50:17 -04:00
item.h mlxsw: item: Add helpers for getting pointer into payload for char buffer item 2017-02-03 16:35:38 -05:00
minimal.c mlxsw: minimal: Add I2C support for Mellanox ASICs 2016-11-16 23:29:04 -05:00
pci.c mlxsw: convert to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
pci.h mlxsw: switchib: Introduce SwitchIB and SwitchIB silicon driver 2016-10-30 16:50:17 -04:00
pci_hw.h mlxsw: pci: Fix size of trap_id field in CQE 2017-06-06 12:45:23 -04:00
port.h mlxsw: Query maximum number of ports from firmware 2017-03-24 13:53:28 -07:00
reg.h mlxsw: reg: Add ext and tc-cong counter groups 2017-11-08 12:23:38 +09:00
resources.h mlxsw: resources: Add multicast ERIF list entries resource 2017-09-19 14:21:40 -07:00
spectrum.c mlxsw: spectrum: Do not try to create non-existing ports during unsplit 2017-11-21 20:15:22 +09:00
spectrum.h mlxsw: spectrum: Do not try to create non-existing ports during unsplit 2017-11-21 20:15:22 +09:00
spectrum_acl.c mlxsw: spectrum_acl: Propagate errors from mlxsw_afa_block_jump/continue 2017-09-26 20:26:45 -07:00
spectrum_acl_flex_actions.c mlxsw: spectrum: Move ACL flexible actions instance to spectrum 2017-09-19 14:21:40 -07:00
spectrum_acl_flex_actions.h mlxsw: spectrum: Move ACL flexible actions instance to spectrum 2017-09-19 14:21:40 -07:00
spectrum_acl_flex_keys.h mlxsw: spectrum: Add tos to the ipv4 acl block 2017-07-17 09:18:23 -07:00
spectrum_acl_tcam.c mlxsw: spectrum_acl: Propagate errors from mlxsw_afa_block_jump/continue 2017-09-26 20:26:45 -07:00
spectrum_buffers.c mlxsw: spectrum_buffer: Reduce scope of shared buffer struct 2017-05-17 14:06:54 -04:00
spectrum_cnt.c mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum_cnt.h mlxsw: spectrum: Support for counters on router interfaces 2017-03-28 17:11:55 -07:00
spectrum_dcb.c mlxsw: spectrum: Do not override PAUSE settings 2016-08-08 12:57:27 -07:00
spectrum_dpipe.c mlxsw: spectrum_dpipe: Fix entries dump of the adjacency table 2017-10-24 19:02:02 +09:00
spectrum_dpipe.h mlxsw: spectrum_dpipe: Add initial support for the router adjacency table 2017-09-26 20:04:35 -07:00
spectrum_fid.c mlxsw: spectrum: Improve IPv6 unregistered multicast flooding 2017-07-17 09:19:39 -07:00
spectrum_flower.c mlxsw: spectrum_flower: Offload "ok" termination action 2017-09-26 20:26:45 -07:00
spectrum_ipip.c mlxsw: spectrum_ipip: Handle underlay device change 2017-11-04 09:15:18 +09:00
spectrum_ipip.h mlxsw: spectrum: Handle NETDEV_CHANGE on L3 tunnels 2017-11-04 09:15:18 +09:00
spectrum_kvdl.c mlxsw: spectrum: Add another partition to KVD linear 2017-10-23 05:23:06 +01:00
spectrum_mr.c mlxsw: spectrum: mr: Make the function mlxsw_sp_mr_dev_vif_lookup static 2017-10-24 19:07:13 +09:00
spectrum_mr.h mlxsw: spectrum: mr_tcam: Add trap-and-forward multicast route 2017-10-03 10:06:30 -07:00
spectrum_mr_tcam.c mlxsw: spectrum: mr_tcam: Include the mr_tcam header file 2017-10-24 19:07:13 +09:00
spectrum_mr_tcam.h mlxsw: spectrum: Add the multicast routing hardware logic 2017-09-27 11:33:28 -07:00
spectrum_qdisc.c mlxsw: spectrum: Support general qdisc stats 2017-11-08 12:23:38 +09:00
spectrum_router.c mlxsw: spectrum_router: Update nexthop RIF on update 2017-11-28 09:55:48 -05:00
spectrum_router.h mlxsw: spectrum: Handle NETDEV_CHANGE on L3 tunnels 2017-11-04 09:15:18 +09:00
spectrum_switchdev.c mlxsw: spectrum_switchdev: Support bridge mrouter notifications 2017-10-09 10:18:11 -07:00
switchib.c mlxsw: make mlxsw_config_profile const 2017-08-11 14:57:04 -07:00
switchx2.c mlxsw: make mlxsw_config_profile const 2017-08-11 14:57:04 -07:00
trap.h mlxsw: spectrum: Add trap for multicast trap-and-forward routes 2017-10-03 10:06:30 -07:00
txheader.h mlxsw: spectrum: Add initial support for Spectrum ASIC 2015-10-16 07:15:23 -07:00