From: Ido Schimmel Date: Mon, 6 Feb 2017 15:20:16 +0000 (+0100) Subject: mlxsw: spectrum_router: Don't read 'nud_state' without lock X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=01b1aa359dd481579de6047af8d7874e6e529585;p=openwrt%2Fstaging%2Fblogic.git mlxsw: spectrum_router: Don't read 'nud_state' without lock We periodically ask the neighbouring system to try and resolve neighbours that are used for nexthops, but aren't currently resolved. However, 'nud_state' is protected by the neighbour lock, so we shouldn't access it without taking it. Instead, we can simply check the 'connected' field of the neighbour entry, which we update upon NEIGH_UPDATE events. Signed-off-by: Ido Schimmel Signed-off-by: Jiri Pirko Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 98a6d03fc0a6..ec022f9c302a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -896,7 +896,7 @@ static void mlxsw_sp_router_probe_unresolved_nexthops(struct work_struct *work) rtnl_lock(); list_for_each_entry(neigh_entry, &mlxsw_sp->router.nexthop_neighs_list, nexthop_neighs_list_node) - if (!(neigh_entry->key.n->nud_state & NUD_VALID)) + if (!neigh_entry->connected) neigh_event_send(neigh_entry->key.n, NULL); rtnl_unlock();