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
Thread (1 message) 1 message, 1 author, last reply 2016-08-23
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help