From 8d13418fb7c06ff6b80ab55000a72b1fcfdc96f8 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 28 Apr 2011 13:54:06 -0700 Subject: [PATCH] --- yaml --- r: 247017 b: refs/heads/master c: 778865a550e7958c1211242cc481f48d46de0f04 h: refs/heads/master i: 247015: 96bd276748c109ae4c6fdce28e6a40a4dfbef84a v: v3 --- [refs] | 2 +- trunk/net/l2tp/l2tp_ip.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 755cb432434a..8ab670a4c914 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b801a4e7092bb869fb5a7d8ee11a9435c5c7b2b1 +refs/heads/master: 778865a550e7958c1211242cc481f48d46de0f04 diff --git a/trunk/net/l2tp/l2tp_ip.c b/trunk/net/l2tp/l2tp_ip.c index 962a607b51da..e13c166824e0 100644 --- a/trunk/net/l2tp/l2tp_ip.c +++ b/trunk/net/l2tp/l2tp_ip.c @@ -472,13 +472,15 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m if (rt == NULL) { struct ip_options_rcu *inet_opt; - inet_opt = rcu_dereference_protected(inet->inet_opt, - sock_owned_by_user(sk)); + rcu_read_lock(); + inet_opt = rcu_dereference(inet->inet_opt); /* Use correct destination address if we have options. */ if (inet_opt && inet_opt->opt.srr) daddr = inet_opt->opt.faddr; + rcu_read_unlock(); + /* If this fails, retransmit mechanism of transport layer will * keep trying until route appears or the connection times * itself out.