aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/l2tp/l2tp_ip.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
index 962a607b51da..e13c166824e0 100644
--- a/net/l2tp/l2tp_ip.c
+++ b/net/l2tp/l2tp_ip.c
@@ -472,13 +472,15 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
472 if (rt == NULL) { 472 if (rt == NULL) {
473 struct ip_options_rcu *inet_opt; 473 struct ip_options_rcu *inet_opt;
474 474
475 inet_opt = rcu_dereference_protected(inet->inet_opt, 475 rcu_read_lock();
476 sock_owned_by_user(sk)); 476 inet_opt = rcu_dereference(inet->inet_opt);
477 477
478 /* Use correct destination address if we have options. */ 478 /* Use correct destination address if we have options. */
479 if (inet_opt && inet_opt->opt.srr) 479 if (inet_opt && inet_opt->opt.srr)
480 daddr = inet_opt->opt.faddr; 480 daddr = inet_opt->opt.faddr;
481 481
482 rcu_read_unlock();
483
482 /* If this fails, retransmit mechanism of transport layer will 484 /* If this fails, retransmit mechanism of transport layer will
483 * keep trying until route appears or the connection times 485 * keep trying until route appears or the connection times
484 * itself out. 486 * itself out.