|
@@ -547,8 +547,12 @@ void batadv_tvlv_handler_register(struct batadv_priv *bat_priv,
|
|
|
INIT_HLIST_NODE(&tvlv_handler->list);
|
|
|
|
|
|
spin_lock_bh(&bat_priv->tvlv.handler_list_lock);
|
|
|
+ kref_get(&tvlv_handler->refcount);
|
|
|
hlist_add_head_rcu(&tvlv_handler->list, &bat_priv->tvlv.handler_list);
|
|
|
spin_unlock_bh(&bat_priv->tvlv.handler_list_lock);
|
|
|
+
|
|
|
+ /* don't return reference to new tvlv_handler */
|
|
|
+ batadv_tvlv_handler_put(tvlv_handler);
|
|
|
}
|
|
|
|
|
|
/**
|