aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/batman-adv/gateway_client.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index e6c8382c79ba..ccf70bed0d0c 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -527,11 +527,12 @@ void batadv_gw_node_update(struct batadv_priv *bat_priv,
527 * gets dereferenced. 527 * gets dereferenced.
528 */ 528 */
529 spin_lock_bh(&bat_priv->gw.list_lock); 529 spin_lock_bh(&bat_priv->gw.list_lock);
530 hlist_del_init_rcu(&gw_node->list); 530 if (!hlist_unhashed(&gw_node->list)) {
531 hlist_del_init_rcu(&gw_node->list);
532 batadv_gw_node_free_ref(gw_node);
533 }
531 spin_unlock_bh(&bat_priv->gw.list_lock); 534 spin_unlock_bh(&bat_priv->gw.list_lock);
532 535
533 batadv_gw_node_free_ref(gw_node);
534
535 curr_gw = batadv_gw_get_selected_gw_node(bat_priv); 536 curr_gw = batadv_gw_get_selected_gw_node(bat_priv);
536 if (gw_node == curr_gw) 537 if (gw_node == curr_gw)
537 batadv_gw_reselect(bat_priv); 538 batadv_gw_reselect(bat_priv);