Signed-off-by: Hannes Frederic Sowa <han...@stressinduktion.org>
---
 net/ipv4/tcp_output.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index ba3621834e7bfa..3f70582578ada0 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1426,21 +1426,21 @@ EXPORT_SYMBOL(tcp_sync_mss);
 unsigned int tcp_current_mss(struct sock *sk)
 {
        const struct tcp_sock *tp = tcp_sk(sk);
-       const struct dst_entry *dst = __sk_dst_get(sk);
+       const struct dst_entry *dst;
        u32 mss_now;
        unsigned int header_len;
        struct tcp_out_options opts;
        struct tcp_md5sig_key *md5;
 
+       rcu_read_lock();
        mss_now = tp->mss_cache;
-
+       dst = __sk_dst_get(sk);
        if (dst) {
                u32 mtu = dst_mtu(dst);
                if (mtu != inet_csk(sk)->icsk_pmtu_cookie)
                        mss_now = tcp_sync_mss(sk, mtu);
        }
 
-       rcu_read_lock();
        header_len = tcp_established_options(sk, NULL, &opts, &md5) +
                     sizeof(struct tcphdr);
        rcu_read_unlock();
-- 
2.5.5

Reply via email to