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, -- Antonio Quartulli