net: add a noref bit on skb dst
[safe/jmp/linux-2.6] / net / ipv4 / netfilter.c
index 82fb43c..07de855 100644 (file)
@@ -17,7 +17,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type)
        const struct iphdr *iph = ip_hdr(skb);
        struct rtable *rt;
        struct flowi fl = {};
-       struct dst_entry *odst;
+       unsigned long orefdst;
        unsigned int hh_len;
        unsigned int type;
 
@@ -51,14 +51,14 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type)
                if (ip_route_output_key(net, &rt, &fl) != 0)
                        return -1;
 
-               odst = skb_dst(skb);
+               orefdst = skb->_skb_refdst;
                if (ip_route_input(skb, iph->daddr, iph->saddr,
                                   RT_TOS(iph->tos), rt->u.dst.dev) != 0) {
                        dst_release(&rt->u.dst);
                        return -1;
                }
                dst_release(&rt->u.dst);
-               dst_release(odst);
+               refdst_drop(orefdst);
        }
 
        if (skb_dst(skb)->error)