From 08438bc52b8f020ac955ce48ebf863f37edcb230 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Mon, 24 Nov 2008 16:07:50 -0800 Subject: [PATCH] --- yaml --- r: 122123 b: refs/heads/master c: a21bba945430f3f5e00c349665f88cdacdb32a8d h: refs/heads/master i: 122121: 644fd13266eab076133da85718de9d408989f6c5 122119: 923ac4836fb1ba9682144537d6f9ee77ee489145 v: v3 --- [refs] | 2 +- trunk/net/ipv4/ip_output.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 01b2e27a9b7e..7b50bdc311a0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e77d89b2fa8e3f8325b8ce7893ec3645f41aff5 +refs/heads/master: a21bba945430f3f5e00c349665f88cdacdb32a8d diff --git a/trunk/net/ipv4/ip_output.c b/trunk/net/ipv4/ip_output.c index 5516825a0751..8ebe86dd72af 100644 --- a/trunk/net/ipv4/ip_output.c +++ b/trunk/net/ipv4/ip_output.c @@ -1284,7 +1284,12 @@ int ip_push_pending_frames(struct sock *sk) skb->priority = sk->sk_priority; skb->mark = sk->sk_mark; - skb->dst = dst_clone(&rt->u.dst); + /* + * Steal rt from cork.dst to avoid a pair of atomic_inc/atomic_dec + * on dst refcount + */ + inet->cork.dst = NULL; + skb->dst = &rt->u.dst; if (iph->protocol == IPPROTO_ICMP) icmp_out_count(net, ((struct icmphdr *)