On Thu, Aug 04, 2016 at 07:56:44AM +0200, Sven Eckelmann wrote:
Ok, looks like the neigh_list edge in my graph is incorrectly there. But what about last_bonding_candidate? This definitely has a reference counter (and needs it) and thus your code would cause problems when bonding is enabled.
One more tiny thing, that I noticed during rereading & playing with that part of the code:
The usage of orig_node->last_bonding_candidate looks a lot like rcu-pointer style. However it is read & set without any rcu_dereference() / rcu_assign() wrappers.
Is something else protecting a simultaneous read (for instance from the neighbor table output) of last_bonding_candidate while being changed via batadv_last_bonding_replace()?