On 24/06/15 14:50, Simon Wunderlich wrote:
@@ -537,9 +529,15 @@ void batadv_gw_node_update(struct batadv_priv *bat_priv, /* Note: We don't need a NULL check here, since curr_gw never * gets dereferenced. */
spin_lock_bh(&bat_priv->gw.list_lock);
hlist_del_rcu(&gw_node->list);
spin_unlock_bh(&bat_priv->gw.list_lock);
have you verified that we can't get to this point through two threads and enter the same problem that Sven and Marek have been discussing and fixing in these days: removing an element from a list twice
If this is possible, you should check that this element is in the list before deleting it.
Cheers,