[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1459468123-31474-1-git-send-email-hannes@stressinduktion.org>
Date: Fri, 1 Apr 2016 01:48:43 +0200
From: Hannes Frederic Sowa <hannes@...essinduktion.org>
To: davem@...emloft.net
Cc: netdev@...r.kernel.org, sasha.levin@...cle.com,
daniel@...earbox.net, alexei.starovoitov@...il.com,
mkubecek@...e.cz
Subject: [PATCH net 5/4] tcp: fix rcu usage around __sk_dst_get in tcp_update_metrics
Already another one fix I overlooked.
Signed-off-by: Hannes Frederic Sowa <hannes@...essinduktion.org>
---
net/ipv4/tcp_metrics.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c
index 33a36648423e8b..196de79902819a 100644
--- a/net/ipv4/tcp_metrics.c
+++ b/net/ipv4/tcp_metrics.c
@@ -367,7 +367,7 @@ static struct tcp_metrics_block *tcp_get_metrics(struct sock *sk,
void tcp_update_metrics(struct sock *sk)
{
const struct inet_connection_sock *icsk = inet_csk(sk);
- struct dst_entry *dst = __sk_dst_get(sk);
+ struct dst_entry *dst;
struct tcp_sock *tp = tcp_sk(sk);
struct net *net = sock_net(sk);
struct tcp_metrics_block *tm;
@@ -375,13 +375,14 @@ void tcp_update_metrics(struct sock *sk)
u32 val;
int m;
+ rcu_read_lock();
+ dst = __sk_dst_get(sk);
if (sysctl_tcp_nometrics_save || !dst)
- return;
+ goto out_unlock;
if (dst->flags & DST_HOST)
dst_confirm(dst);
- rcu_read_lock();
if (icsk->icsk_backoff || !tp->srtt_us) {
/* This session failed to estimate rtt. Why?
* Probably, no packets returned in time. Reset our
--
2.5.5
Powered by blists - more mailing lists