From: Marek Lindner Date: Sat, 25 Jul 2015 20:37:15 +0000 (+0800) Subject: batman-adv: move hardif refcount inc to batadv_neigh_node_new() X-Git-Tag: v4.3-rc1~96^2~48^2~9 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f729dc70dafec281e524f51ae496a72ea4f8e319;p=karo-tx-linux.git batman-adv: move hardif refcount inc to batadv_neigh_node_new() The batadv_neigh_node cleanup function 'batadv_neigh_node_free_rcu()' takes care of reducing the hardif refcounter, hence it's only logical to assume the creating function of that same object 'batadv_neigh_node_new()' takes care of increasing the same refcounter. Signed-off-by: Marek Lindner Acked-by: Simon Wunderlich Signed-off-by: Antonio Quartulli --- diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c index 5c122000688f..b9b8b333b363 100644 --- a/net/batman-adv/bat_iv_ogm.c +++ b/net/batman-adv/bat_iv_ogm.c @@ -303,12 +303,6 @@ batadv_iv_ogm_neigh_new(struct batadv_hard_iface *hard_iface, if (!neigh_node) goto out; - if (!atomic_inc_not_zero(&hard_iface->refcount)) { - kfree(neigh_node); - neigh_node = NULL; - goto out; - } - neigh_node->orig_node = orig_neigh; neigh_node->if_incoming = hard_iface; diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c index 610620aa8d26..f8317c1db427 100644 --- a/net/batman-adv/originator.c +++ b/net/batman-adv/originator.c @@ -461,6 +461,12 @@ batadv_neigh_node_new(struct batadv_hard_iface *hard_iface, if (!neigh_node) goto out; + if (!atomic_inc_not_zero(&hard_iface->refcount)) { + kfree(neigh_node); + neigh_node = NULL; + goto out; + } + INIT_HLIST_NODE(&neigh_node->list); INIT_HLIST_HEAD(&neigh_node->ifinfo_list); spin_lock_init(&neigh_node->ifinfo_lock);