lwtunnel: change prototype of lwtunnel_state_get()
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Fri, 24 Jul 2015 10:28:36 +0000 (12:28 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Jul 2015 08:02:49 +0000 (01:02 -0700)
It saves some lines and simplify a bit the code when the state is returning
by this function. It's also useful to handle a NULL entry.

To avoid too long lines, I've also renamed lwtunnel_state_get() and
lwtunnel_state_put() to lwtstate_get() and lwtstate_put().

CC: Thomas Graf <tgraf@suug.ch>
CC: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/lwtunnel.h
net/ipv4/fib_semantics.c
net/ipv4/route.c
net/ipv6/ip6_fib.c
net/ipv6/route.c

index 918e03c1dafa5d94f52f5784ba46a2efa95c8dfb..b02039081b0485caa3e7c6ec295c19c36566d63c 100644 (file)
@@ -35,12 +35,16 @@ extern const struct lwtunnel_encap_ops __rcu *
                lwtun_encaps[LWTUNNEL_ENCAP_MAX+1];
 
 #ifdef CONFIG_LWTUNNEL
-static inline void lwtunnel_state_get(struct lwtunnel_state *lws)
+static inline struct lwtunnel_state *
+lwtstate_get(struct lwtunnel_state *lws)
 {
-       atomic_inc(&lws->refcnt);
+       if (lws)
+               atomic_inc(&lws->refcnt);
+
+       return lws;
 }
 
-static inline void lwtunnel_state_put(struct lwtunnel_state *lws)
+static inline void lwtstate_put(struct lwtunnel_state *lws)
 {
        if (!lws)
                return;
@@ -74,11 +78,13 @@ int lwtunnel_output6(struct sock *sk, struct sk_buff *skb);
 
 #else
 
-static inline void lwtunnel_state_get(struct lwtunnel_state *lws)
+static inline struct lwtunnel_state *
+lwtstate_get(struct lwtunnel_state *lws)
 {
+       return lws;
 }
 
-static inline void lwtunnel_state_put(struct lwtunnel_state *lws)
+static inline void lwtstate_put(struct lwtunnel_state *lws)
 {
 }
 
index d4c6732cfbfa62aa0810729705b791d3de5b88fb..65e00399a9a6f7382435f091be6de33fa9e2b97b 100644 (file)
@@ -209,7 +209,7 @@ static void free_fib_info_rcu(struct rcu_head *head)
        change_nexthops(fi) {
                if (nexthop_nh->nh_dev)
                        dev_put(nexthop_nh->nh_dev);
-               lwtunnel_state_put(nexthop_nh->nh_lwtstate);
+               lwtstate_put(nexthop_nh->nh_lwtstate);
                free_nh_exceptions(nexthop_nh);
                rt_fibinfo_free_cpus(nexthop_nh->nh_pcpu_rth_output);
                rt_fibinfo_free(&nexthop_nh->nh_rth_input);
@@ -514,8 +514,8 @@ static int fib_get_nhs(struct fib_info *fi, struct rtnexthop *rtnh,
                                                           nla, &lwtstate);
                                if (ret)
                                        goto errout;
-                               lwtunnel_state_get(lwtstate);
-                               nexthop_nh->nh_lwtstate = lwtstate;
+                               nexthop_nh->nh_lwtstate =
+                                       lwtstate_get(lwtstate);
                        }
                }
 
@@ -971,8 +971,7 @@ struct fib_info *fib_create_info(struct fib_config *cfg)
                        if (err)
                                goto failure;
 
-                       lwtunnel_state_get(lwtstate);
-                       nh->nh_lwtstate = lwtstate;
+                       nh->nh_lwtstate = lwtstate_get(lwtstate);
                }
                nh->nh_oif = cfg->fc_oif;
                nh->nh_gw = cfg->fc_gw;
index 519ec232818d406cbd2e9573e8a954e8b552943f..11096396ef4aee42a3f800b2f78bd9d86663a4ae 100644 (file)
@@ -1358,7 +1358,7 @@ static void ipv4_dst_destroy(struct dst_entry *dst)
                list_del(&rt->rt_uncached);
                spin_unlock_bh(&ul->lock);
        }
-       lwtunnel_state_put(rt->rt_lwtstate);
+       lwtstate_put(rt->rt_lwtstate);
 }
 
 void rt_flush_dev(struct net_device *dev)
@@ -1407,12 +1407,7 @@ static void rt_set_nexthop(struct rtable *rt, __be32 daddr,
 #ifdef CONFIG_IP_ROUTE_CLASSID
                rt->dst.tclassid = nh->nh_tclassid;
 #endif
-               if (nh->nh_lwtstate) {
-                       lwtunnel_state_get(nh->nh_lwtstate);
-                       rt->rt_lwtstate = nh->nh_lwtstate;
-               } else {
-                       rt->rt_lwtstate = NULL;
-               }
+               rt->rt_lwtstate = lwtstate_get(nh->nh_lwtstate);
                if (unlikely(fnhe))
                        cached = rt_bind_exception(rt, fnhe, daddr);
                else if (!(rt->dst.flags & DST_NOCACHE))
index d715f2e0c4e711f8a9d2f2e901b335a5d7a4b3c8..5693b5eb84820fceb7feb2f87345cd38b2613c6e 100644 (file)
@@ -178,7 +178,7 @@ static void rt6_free_pcpu(struct rt6_info *non_pcpu_rt)
 static void rt6_release(struct rt6_info *rt)
 {
        if (atomic_dec_and_test(&rt->rt6i_ref)) {
-               lwtunnel_state_put(rt->rt6i_lwtstate);
+               lwtstate_put(rt->rt6i_lwtstate);
                rt6_free_pcpu(rt);
                dst_free(&rt->dst);
        }
index fbe27fb6bd3f006416627d5b2da85a37954a635a..c9b2b9fe83fc44cb998a7cdc30a27e8a1ece3f36 100644 (file)
@@ -1778,8 +1778,7 @@ int ip6_route_add(struct fib6_config *cfg)
                                           cfg->fc_encap, &lwtstate);
                if (err)
                        goto out;
-               lwtunnel_state_get(lwtstate);
-               rt->rt6i_lwtstate = lwtstate;
+               rt->rt6i_lwtstate = lwtstate_get(lwtstate);
                if (lwtunnel_output_redirect(rt->rt6i_lwtstate))
                        rt->dst.output = lwtunnel_output6;
        }
@@ -2161,10 +2160,7 @@ static void ip6_rt_copy_init(struct rt6_info *rt, struct rt6_info *ort)
 #endif
        rt->rt6i_prefsrc = ort->rt6i_prefsrc;
        rt->rt6i_table = ort->rt6i_table;
-       if (ort->rt6i_lwtstate) {
-               lwtunnel_state_get(ort->rt6i_lwtstate);
-               rt->rt6i_lwtstate = ort->rt6i_lwtstate;
-       }
+       rt->rt6i_lwtstate = lwtstate_get(ort->rt6i_lwtstate);
 }
 
 #ifdef CONFIG_IPV6_ROUTE_INFO