From 17b611ba7a90e181fe97386cb2237bf27bfe93d6 Mon Sep 17 00:00:00 2001 From: Steffen Klassert Date: Fri, 4 Jun 2010 01:57:38 +0000 Subject: [PATCH] --- yaml --- r: 200165 b: refs/heads/master c: 8764ab2ca7ab5055e1ca80f9cfa4970c34acb804 h: refs/heads/master i: 200163: 230dc5316d3acafdbf097bee7670a82fa1a71bf5 v: v3 --- [refs] | 2 +- trunk/include/net/dst.h | 6 +++--- trunk/net/xfrm/xfrm_output.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 226d716405eb..5c78d41ee171 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4f4aeb7fd0f7e6ca008bb2147ba36cee13876595 +refs/heads/master: 8764ab2ca7ab5055e1ca80f9cfa4970c34acb804 diff --git a/trunk/include/net/dst.h b/trunk/include/net/dst.h index 612069beda73..81d1413a8701 100644 --- a/trunk/include/net/dst.h +++ b/trunk/include/net/dst.h @@ -250,11 +250,11 @@ static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev) * Linux networking. Thus, destinations are stackable. */ -static inline struct dst_entry *dst_pop(struct dst_entry *dst) +static inline struct dst_entry *skb_dst_pop(struct sk_buff *skb) { - struct dst_entry *child = dst_clone(dst->child); + struct dst_entry *child = skb_dst(skb)->child; - dst_release(dst); + skb_dst_drop(skb); return child; } diff --git a/trunk/net/xfrm/xfrm_output.c b/trunk/net/xfrm/xfrm_output.c index 6a329158bdfa..a3cca0a94346 100644 --- a/trunk/net/xfrm/xfrm_output.c +++ b/trunk/net/xfrm/xfrm_output.c @@ -95,13 +95,13 @@ static int xfrm_output_one(struct sk_buff *skb, int err) goto error_nolock; } - dst = dst_pop(dst); + dst = skb_dst_pop(skb); if (!dst) { XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTERROR); err = -EHOSTUNREACH; goto error_nolock; } - skb_dst_set(skb, dst); + skb_dst_set_noref(skb, dst); x = dst->xfrm; } while (x && !(x->outer_mode->flags & XFRM_MODE_FLAG_TUNNEL));