Re: [PATCH 18/20] batman-adv: Place kref_get for tvlv_handler near use
From: Sergei Shtylyov <hidden>
Date: 2016-08-23 13:36:17
Also in:
batman
On 8/22/2016 4:56 PM, Simon Wunderlich wrote:
From: Sven Eckelmann <redacted> 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...
quoted hunk
Signed-off-by: Sven Eckelmann <redacted> Signed-off-by: Marek Lindner <redacted> Signed-off-by: Simon Wunderlich <redacted> --- 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