On 16/11/2021 04:30, Tony Lu wrote: > diff --git a/net/smc/smc_close.c b/net/smc/smc_close.c > index 0f9ffba07d26..04620b53b74a 100644 > --- a/net/smc/smc_close.c > +++ b/net/smc/smc_close.c > @@ -228,6 +228,12 @@ int smc_close_active(struct smc_sock *smc) > /* send close request */ > rc = smc_close_final(conn); > sk->sk_state = SMC_PEERCLOSEWAIT1; > + > + /* actively shutdown clcsock before peer close it, > + * prevent peer from entering TIME_WAIT state. > + */ > + if (smc->clcsock && smc->clcsock->sk) > + rc = kernel_sock_shutdown(smc->clcsock, SHUT_RDWR); > } else { While integrating this patch I stumbled over the overwritten rc, which was already set with the return value from smc_close_final(). Is the rc from kernel_sock_shutdown() even important for the result of this function? How to handle this in your opinion?