net/smc: no cursor update send in state SMC_INIT
authorUrsula Braun <ubraun@linux.ibm.com>
Fri, 3 Aug 2018 08:38:33 +0000 (10:38 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 4 Aug 2018 20:09:33 +0000 (13:09 -0700)
If a writer blocked condition is received without data, the current
consumer cursor is immediately sent. Servers could already receive this
condition in state SMC_INIT without finished tx-setup. This patch
avoids sending a consumer cursor update in this case.

Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/smc/smc_cdc.c

index a7e8d63fc8aebe61c094c232d4b6f31439eed3e2..9bde1e4ca288cbf9db802fa3fd15650df4788867 100644 (file)
@@ -233,7 +233,8 @@ static void smc_cdc_msg_recv_action(struct smc_sock *smc,
                        /* force immediate tx of current consumer cursor, but
                         * under send_lock to guarantee arrival in seqno-order
                         */
-                       smc_tx_sndbuf_nonempty(conn);
+                       if (smc->sk.sk_state != SMC_INIT)
+                               smc_tx_sndbuf_nonempty(conn);
                }
        }