diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2011-03-15 22:09:32 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-28 02:55:01 +0200 |
commit | e433430a0ca9cc1b851a83ac3b305e955b64880a (patch) | |
tree | 129e0c5db7e5643352ac55a920b5d6c5ef65fb66 /net | |
parent | xfrm: Force a dst refcount before entering the xfrm type handlers (diff) | |
download | linux-e433430a0ca9cc1b851a83ac3b305e955b64880a.tar.xz linux-e433430a0ca9cc1b851a83ac3b305e955b64880a.zip |
dst: Clone child entry in skb_dst_pop
We clone the child entry in skb_dst_pop before we call
skb_dst_drop(). Otherwise we might kill the child right
before we return it to the caller.
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/xfrm/xfrm_output.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index 8f3f0eedc5a4..47bacd8c0250 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c @@ -96,7 +96,7 @@ resume: err = -EHOSTUNREACH; goto error_nolock; } - skb_dst_set(skb, dst_clone(dst)); + skb_dst_set(skb, dst); x = dst->xfrm; } while (x && !(x->outer_mode->flags & XFRM_MODE_FLAG_TUNNEL)); |