Skip to content

Commit dd65d87

Browse files
Ursula Braundavem330
authored andcommitted
net/smc: enable fallback for connection abort in state INIT
If a linkgroup is terminated abnormally already due to failing LLC CONFIRM LINK or LLC ADD LINK, fallback to TCP is still possible. In this case do not switch to state SMC_PEERABORTWAIT and do not set sk_err. Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 1ca52fc commit dd65d87

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

net/smc/smc_close.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,14 @@ static void smc_close_active_abort(struct smc_sock *smc)
100100
struct smc_cdc_conn_state_flags *txflags =
101101
&smc->conn.local_tx_ctrl.conn_state_flags;
102102

103-
sk->sk_err = ECONNABORTED;
104-
if (smc->clcsock && smc->clcsock->sk) {
105-
smc->clcsock->sk->sk_err = ECONNABORTED;
106-
smc->clcsock->sk->sk_state_change(smc->clcsock->sk);
103+
if (sk->sk_state != SMC_INIT && smc->clcsock && smc->clcsock->sk) {
104+
sk->sk_err = ECONNABORTED;
105+
if (smc->clcsock && smc->clcsock->sk) {
106+
smc->clcsock->sk->sk_err = ECONNABORTED;
107+
smc->clcsock->sk->sk_state_change(smc->clcsock->sk);
108+
}
107109
}
108110
switch (sk->sk_state) {
109-
case SMC_INIT:
110-
sk->sk_state = SMC_PEERABORTWAIT;
111-
break;
112111
case SMC_ACTIVE:
113112
sk->sk_state = SMC_PEERABORTWAIT;
114113
release_sock(sk);
@@ -143,6 +142,7 @@ static void smc_close_active_abort(struct smc_sock *smc)
143142
case SMC_PEERFINCLOSEWAIT:
144143
sock_put(sk); /* passive closing */
145144
break;
145+
case SMC_INIT:
146146
case SMC_PEERABORTWAIT:
147147
case SMC_CLOSED:
148148
break;

0 commit comments

Comments
 (0)