|
@@ -289,13 +289,18 @@ static inline void skb_dst_drop(struct sk_buff *skb)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static inline void skb_dst_copy(struct sk_buff *nskb, const struct sk_buff *oskb)
|
|
|
+static inline void __skb_dst_copy(struct sk_buff *nskb, unsigned long refdst)
|
|
|
{
|
|
|
- nskb->_skb_refdst = oskb->_skb_refdst;
|
|
|
+ nskb->_skb_refdst = refdst;
|
|
|
if (!(nskb->_skb_refdst & SKB_DST_NOREF))
|
|
|
dst_clone(skb_dst(nskb));
|
|
|
}
|
|
|
|
|
|
+static inline void skb_dst_copy(struct sk_buff *nskb, const struct sk_buff *oskb)
|
|
|
+{
|
|
|
+ __skb_dst_copy(nskb, oskb->_skb_refdst);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* skb_dst_force - makes sure skb dst is refcounted
|
|
|
* @skb: buffer
|