diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-25 09:52:59 +0100 | 
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-06-25 09:52:59 +0100 | 
| commit | d1e16c1a61d68692dba346f4a841315343b085f4 (patch) | |
| tree | 249ec07d1489769fe83b4ec507708455cc0c5138 /net/l2tp/l2tp_ip.c | |
| parent | 1573ee81cb9ef24fa5acee6b7442e215e63ede2f (diff) | |
| parent | 6b16351acbd415e66ba16bf7d473ece1574cf0bc (diff) | |
| download | olio-linux-3.10-d1e16c1a61d68692dba346f4a841315343b085f4.tar.xz olio-linux-3.10-d1e16c1a61d68692dba346f4a841315343b085f4.zip  | |
Merge tag 'v3.5-rc4' into for-3.6
Linux 3.5-rc4 contains some bug fixes which overlap with new features.
Diffstat (limited to 'net/l2tp/l2tp_ip.c')
| -rw-r--r-- | net/l2tp/l2tp_ip.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c index 70614e7affa..61d8b75d268 100644 --- a/net/l2tp/l2tp_ip.c +++ b/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();  |