From 45bdc50babed83ff2e17021237232f57bb2ed9bc Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Fri, 8 Jun 2012 06:25:00 +0000 Subject: [PATCH] --- yaml --- r: 310751 b: refs/heads/master c: 4399a4df98a63e30fd16e9d0cecc46ea92269e8f h: refs/heads/master i: 310749: d5302e12d204083ecf9b75683a11269f2f3d9e18 310747: af34d4464fee77524f02b5a5e86f7d918de60031 310743: 96447ed96f08028b23ffe84364537bcdcc549b8e 310735: 93f4f426fc6081f513b614e8b223b9baa62d9959 310719: 7d9401728ada53ff014a8a266f9dcc98707bc228 v: v3 --- [refs] | 2 +- trunk/net/l2tp/l2tp_ip.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 1942eba1d24b..e9ceec9c7909 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6a2b28ef036ab5c66fdc606fe97d9e5cb34ea409 +refs/heads/master: 4399a4df98a63e30fd16e9d0cecc46ea92269e8f diff --git a/trunk/net/l2tp/l2tp_ip.c b/trunk/net/l2tp/l2tp_ip.c index 70614e7affab..61d8b75d2686 100644 --- a/trunk/net/l2tp/l2tp_ip.c +++ b/trunk/net/l2tp/l2tp_ip.c @@ -464,10 +464,12 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m sk->sk_bound_dev_if); if (IS_ERR(rt)) goto no_route; - if (connected) + if (connected) { sk_setup_caps(sk, &rt->dst); - else - dst_release(&rt->dst); /* safe since we hold rcu_read_lock */ + } else { + skb_dst_set(skb, &rt->dst); + goto xmit; + } } /* We dont need to clone dst here, it is guaranteed to not disappear. @@ -475,6 +477,7 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m */ skb_dst_set_noref(skb, &rt->dst); +xmit: /* Queue the packet to IP for output */ rc = ip_queue_xmit(skb, &inet->cork.fl); rcu_read_unlock();