Merge tag 'pinctrl-v5.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[linux-2.6-microblaze.git] / net / batman-adv / gateway_client.c
index 007f282..b746613 100644 (file)
@@ -59,7 +59,7 @@
  *  after rcu grace period
  * @ref: kref pointer of the gw_node
  */
-static void batadv_gw_node_release(struct kref *ref)
+void batadv_gw_node_release(struct kref *ref)
 {
        struct batadv_gw_node *gw_node;
 
@@ -69,16 +69,6 @@ static void batadv_gw_node_release(struct kref *ref)
        kfree_rcu(gw_node, rcu);
 }
 
-/**
- * batadv_gw_node_put() - decrement the gw_node refcounter and possibly release
- *  it
- * @gw_node: gateway node to free
- */
-void batadv_gw_node_put(struct batadv_gw_node *gw_node)
-{
-       kref_put(&gw_node->refcount, batadv_gw_node_release);
-}
-
 /**
  * batadv_gw_get_selected_gw_node() - Get currently selected gateway
  * @bat_priv: the bat priv with all the soft interface information
@@ -130,8 +120,7 @@ batadv_gw_get_selected_orig(struct batadv_priv *bat_priv)
 unlock:
        rcu_read_unlock();
 out:
-       if (gw_node)
-               batadv_gw_node_put(gw_node);
+       batadv_gw_node_put(gw_node);
        return orig_node;
 }
 
@@ -148,8 +137,7 @@ static void batadv_gw_select(struct batadv_priv *bat_priv,
        curr_gw_node = rcu_replace_pointer(bat_priv->gw.curr_gw, new_gw_node,
                                           true);
 
-       if (curr_gw_node)
-               batadv_gw_node_put(curr_gw_node);
+       batadv_gw_node_put(curr_gw_node);
 
        spin_unlock_bh(&bat_priv->gw.list_lock);
 }
@@ -284,14 +272,10 @@ void batadv_gw_election(struct batadv_priv *bat_priv)
        batadv_gw_select(bat_priv, next_gw);
 
 out:
-       if (curr_gw)
-               batadv_gw_node_put(curr_gw);
-       if (next_gw)
-               batadv_gw_node_put(next_gw);
-       if (router)
-               batadv_neigh_node_put(router);
-       if (router_ifinfo)
-               batadv_neigh_ifinfo_put(router_ifinfo);
+       batadv_gw_node_put(curr_gw);
+       batadv_gw_node_put(next_gw);
+       batadv_neigh_node_put(router);
+       batadv_neigh_ifinfo_put(router_ifinfo);
 }
 
 /**
@@ -325,8 +309,7 @@ void batadv_gw_check_election(struct batadv_priv *bat_priv,
 reselect:
        batadv_gw_reselect(bat_priv);
 out:
-       if (curr_gw_orig)
-               batadv_orig_node_put(curr_gw_orig);
+       batadv_orig_node_put(curr_gw_orig);
 }
 
 /**
@@ -466,13 +449,11 @@ void batadv_gw_node_update(struct batadv_priv *bat_priv,
                if (gw_node == curr_gw)
                        batadv_gw_reselect(bat_priv);
 
-               if (curr_gw)
-                       batadv_gw_node_put(curr_gw);
+               batadv_gw_node_put(curr_gw);
        }
 
 out:
-       if (gw_node)
-               batadv_gw_node_put(gw_node);
+       batadv_gw_node_put(gw_node);
 }
 
 /**
@@ -555,10 +536,8 @@ int batadv_gw_dump(struct sk_buff *msg, struct netlink_callback *cb)
        ret = msg->len;
 
 out:
-       if (primary_if)
-               batadv_hardif_put(primary_if);
-       if (soft_iface)
-               dev_put(soft_iface);
+       batadv_hardif_put(primary_if);
+       dev_put(soft_iface);
 
        return ret;
 }
@@ -780,15 +759,10 @@ bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
        batadv_neigh_ifinfo_put(old_ifinfo);
 
 out:
-       if (orig_dst_node)
-               batadv_orig_node_put(orig_dst_node);
-       if (curr_gw)
-               batadv_gw_node_put(curr_gw);
-       if (gw_node)
-               batadv_gw_node_put(gw_node);
-       if (neigh_old)
-               batadv_neigh_node_put(neigh_old);
-       if (neigh_curr)
-               batadv_neigh_node_put(neigh_curr);
+       batadv_orig_node_put(orig_dst_node);
+       batadv_gw_node_put(curr_gw);
+       batadv_gw_node_put(gw_node);
+       batadv_neigh_node_put(neigh_old);
+       batadv_neigh_node_put(neigh_curr);
        return out_of_range;
 }