On 8/22/2016 4:56 PM, Simon Wunderlich wrote:
From: Sven Eckelmann <s...@narfation.org>
It is hard to understand why the refcnt is increased when it isn't done
near the actual place the new reference is used. So using kref_get right
before the place which requires the reference and in the same function
helps to avoid accidental problems caused by incorrect reference counting.
Neither does the boilerplate work for this patch...
Signed-off-by: Sven Eckelmann <s...@narfation.org>
Signed-off-by: Marek Lindner <mareklind...@neomailbox.ch>
Signed-off-by: Simon Wunderlich <s...@simonwunderlich.de>
---
net/batman-adv/tvlv.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/batman-adv/tvlv.c b/net/batman-adv/tvlv.c
index 3533867..77654f0 100644
--- a/net/batman-adv/tvlv.c
+++ b/net/batman-adv/tvlv.c
@@ -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);
}
/**
MBR, Sergei