ipv4: Remove the 'publish' logic in tcp_fastopen_init_key_once
authorHaishuang Yan <yanhaishuang@cmss.chinamobile.com>
Wed, 27 Sep 2017 03:35:41 +0000 (11:35 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 2 Oct 2017 00:55:54 +0000 (17:55 -0700)
The 'publish' logic is not necessary after commit dfea2aa65424 ("tcp:
Do not call tcp_fastopen_reset_cipher from interrupt context"), because
in tcp_fastopen_cookie_gen,it wouldn't call tcp_fastopen_init_key_once.

Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/af_inet.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp.c
net/ipv4/tcp_fastopen.c

index 9e414a99034fdd358b07792a7d68029f942cab92..d9376e2458e98b1032ae0ebdc43e353772e14854 100644 (file)
@@ -1555,7 +1555,7 @@ void tcp_fastopen_add_skb(struct sock *sk, struct sk_buff *skb);
 struct sock *tcp_try_fastopen(struct sock *sk, struct sk_buff *skb,
                              struct request_sock *req,
                              struct tcp_fastopen_cookie *foc);
-void tcp_fastopen_init_key_once(bool publish);
+void tcp_fastopen_init_key_once(void);
 bool tcp_fastopen_cookie_check(struct sock *sk, u16 *mss,
                             struct tcp_fastopen_cookie *cookie);
 bool tcp_fastopen_defer_connect(struct sock *sk, int *err);
index ddd126d120acfe38d231396b6caad1321f53ee04..e73ce79d7176733acbae4c57ea5d0fb697455f31 100644 (file)
@@ -222,7 +222,7 @@ int inet_listen(struct socket *sock, int backlog)
                    (tcp_fastopen & TFO_SERVER_ENABLE) &&
                    !inet_csk(sk)->icsk_accept_queue.fastopenq.max_qlen) {
                        fastopen_queue_tune(sk, backlog);
-                       tcp_fastopen_init_key_once(true);
+                       tcp_fastopen_init_key_once();
                }
 
                err = inet_csk_listen_start(sk, backlog);
index e31e853cf486effed1c90d0df1c1c1bfe1db9cb0..f6324ead0e19a7f47ae130a3ccc0a22b01d59411 100644 (file)
@@ -282,11 +282,6 @@ static int proc_tcp_fastopen_key(struct ctl_table *ctl, int write,
                        ret = -EINVAL;
                        goto bad_key;
                }
-               /* Generate a dummy secret but don't publish it. This
-                * is needed so we don't regenerate a new key on the
-                * first invocation of tcp_fastopen_cookie_gen
-                */
-               tcp_fastopen_init_key_once(false);
                tcp_fastopen_reset_cipher(user_key, TCP_FASTOPEN_KEY_LENGTH);
        }
 
index dac56c4ad357d2810880ccda353977f19e947fbb..4e395452d69fd88b1511b93abec5a2e432e89506 100644 (file)
@@ -2749,7 +2749,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
        case TCP_FASTOPEN:
                if (val >= 0 && ((1 << sk->sk_state) & (TCPF_CLOSE |
                    TCPF_LISTEN))) {
-                       tcp_fastopen_init_key_once(true);
+                       tcp_fastopen_init_key_once();
 
                        fastopen_queue_tune(sk, val);
                } else {
index 31b08ec38cb8aeb95601076213fcd9612d8f979b..8c8f0f0af59dd363508096113623f29fc42f6bc6 100644 (file)
@@ -13,7 +13,7 @@ struct tcp_fastopen_context __rcu *tcp_fastopen_ctx;
 
 static DEFINE_SPINLOCK(tcp_fastopen_ctx_lock);
 
-void tcp_fastopen_init_key_once(bool publish)
+void tcp_fastopen_init_key_once(void)
 {
        static u8 key[TCP_FASTOPEN_KEY_LENGTH];
 
@@ -23,7 +23,7 @@ void tcp_fastopen_init_key_once(bool publish)
         * All call sites of tcp_fastopen_cookie_gen also check
         * for a valid cookie, so this is an acceptable risk.
         */
-       if (net_get_random_once(key, sizeof(key)) && publish)
+       if (net_get_random_once(key, sizeof(key)))
                tcp_fastopen_reset_cipher(key, sizeof(key));
 }