ipv4: Kill ip_route_input_noref().
authorDavid Miller <davem@davemloft.net>
Sun, 1 Jul 2012 02:02:53 +0000 (02:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Jul 2012 20:30:59 +0000 (13:30 -0700)
The "noref" argument to ip_route_input_common() is now always ignored
because we do not cache routes, and in that case we must always grab
a reference to the resulting 'dst'.

Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/route.h
net/ipv4/arp.c
net/ipv4/ip_fragment.c
net/ipv4/ip_input.c
net/ipv4/route.c
net/ipv4/xfrm4_input.c

index 5dcfeb621e0669ec381b6e1eaa99b93343ccc37b..5c86c4773b2b4c5e13e81c96e161b0d1713786a4 100644 (file)
@@ -160,20 +160,8 @@ static inline struct rtable *ip_route_output_gre(struct net *net, struct flowi4
        return ip_route_output_key(net, fl4);
 }
 
-extern int ip_route_input_common(struct sk_buff *skb, __be32 dst, __be32 src,
-                                u8 tos, struct net_device *devin, bool noref);
-
-static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src,
-                                u8 tos, struct net_device *devin)
-{
-       return ip_route_input_common(skb, dst, src, tos, devin, false);
-}
-
-static inline int ip_route_input_noref(struct sk_buff *skb, __be32 dst, __be32 src,
-                                      u8 tos, struct net_device *devin)
-{
-       return ip_route_input_common(skb, dst, src, tos, devin, true);
-}
+extern int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src,
+                         u8 tos, struct net_device *devin);
 
 extern void ipv4_update_pmtu(struct sk_buff *skb, struct net *net, u32 mtu,
                             int oif, u32 mark, u8 protocol, int flow_flags);
index 2e560f0c757df3222b394246ab0482300839c19d..c38293f3816104516bc2e3abdd5d9c444c609dd6 100644 (file)
@@ -828,7 +828,7 @@ static int arp_process(struct sk_buff *skb)
        }
 
        if (arp->ar_op == htons(ARPOP_REQUEST) &&
-           ip_route_input_noref(skb, tip, sip, 0, dev) == 0) {
+           ip_route_input(skb, tip, sip, 0, dev) == 0) {
 
                rt = skb_rtable(skb);
                addr_type = rt->rt_type;
index 8d07c973409ca3df9d09f8fb6b3a614d304603a8..7ad88e5e711020f0d733adafd2a60c9287925dd3 100644 (file)
@@ -258,8 +258,8 @@ static void ip_expire(unsigned long arg)
                /* skb dst is stale, drop it, and perform route lookup again */
                skb_dst_drop(head);
                iph = ip_hdr(head);
-               err = ip_route_input_noref(head, iph->daddr, iph->saddr,
-                                          iph->tos, head->dev);
+               err = ip_route_input(head, iph->daddr, iph->saddr,
+                                    iph->tos, head->dev);
                if (err)
                        goto out_rcu_unlock;
 
index b27d4440f523d0d500cbb83a97ed4b6e46d125b6..4ebc6feee25082db739d876cb98d7a9c93bc6d8c 100644 (file)
@@ -336,8 +336,8 @@ static int ip_rcv_finish(struct sk_buff *skb)
         *      how the packet travels inside Linux networking.
         */
        if (!skb_dst(skb)) {
-               int err = ip_route_input_noref(skb, iph->daddr, iph->saddr,
-                                              iph->tos, skb->dev);
+               int err = ip_route_input(skb, iph->daddr, iph->saddr,
+                                        iph->tos, skb->dev);
                if (unlikely(err)) {
                        if (err == -EXDEV)
                                NET_INC_STATS_BH(dev_net(skb->dev),
index 6d6146d31f229471aa518c6c050b622c0f1bcf68..55eb4634ed604e949eed8a89eb564f8f8cad48bf 100644 (file)
@@ -1620,8 +1620,8 @@ martian_source_keep_err:
        goto out;
 }
 
-int ip_route_input_common(struct sk_buff *skb, __be32 daddr, __be32 saddr,
-                          u8 tos, struct net_device *dev, bool noref)
+int ip_route_input(struct sk_buff *skb, __be32 daddr, __be32 saddr,
+                  u8 tos, struct net_device *dev)
 {
        int res;
 
@@ -1664,7 +1664,7 @@ int ip_route_input_common(struct sk_buff *skb, __be32 daddr, __be32 saddr,
        rcu_read_unlock();
        return res;
 }
-EXPORT_SYMBOL(ip_route_input_common);
+EXPORT_SYMBOL(ip_route_input);
 
 /* called with rcu_read_lock() */
 static struct rtable *__mkroute_output(const struct fib_result *res,
index 06814b6216dc1bc71fedc9924b23d74b817a38d8..58d23a57250982b7b0f01986c17ff105b0350135 100644 (file)
@@ -27,8 +27,8 @@ static inline int xfrm4_rcv_encap_finish(struct sk_buff *skb)
        if (skb_dst(skb) == NULL) {
                const struct iphdr *iph = ip_hdr(skb);
 
-               if (ip_route_input_noref(skb, iph->daddr, iph->saddr,
-                                        iph->tos, skb->dev))
+               if (ip_route_input(skb, iph->daddr, iph->saddr,
+                                  iph->tos, skb->dev))
                        goto drop;
        }
        return dst_input(skb);