aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/originator.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/batman-adv/originator.h')
-rw-r--r--net/batman-adv/originator.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/batman-adv/originator.h b/net/batman-adv/originator.h
index b4b9a09..3d7a39d 100644
--- a/net/batman-adv/originator.h
+++ b/net/batman-adv/originator.h
@@ -27,7 +27,7 @@
int originator_init(struct bat_priv *bat_priv);
void originator_free(struct bat_priv *bat_priv);
void purge_orig_ref(struct bat_priv *bat_priv);
-void orig_node_free_ref(struct kref *refcount);
+void orig_node_free_ref(struct orig_node *orig_node);
struct orig_node *get_orig_node(struct bat_priv *bat_priv, uint8_t *addr);
struct neigh_node *create_neighbor(struct orig_node *orig_node,
struct orig_node *orig_neigh_node,
@@ -88,8 +88,10 @@ static inline struct orig_node *orig_hash_find(struct bat_priv *bat_priv,
if (!compare_eth(orig_node, data))
continue;
+ if (!atomic_inc_not_zero(&orig_node->refcount))
+ continue;
+
orig_node_tmp = orig_node;
- kref_get(&orig_node_tmp->refcount);
break;
}
rcu_read_unlock();