Message ID | 20220421094027.683992-1-liuyacan@corp.netease.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 4e2e65e2e56c6ceb4ea1719360080c0af083229e |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net/smc: sync err code when tcp connection was refused | expand |
From: Yacan Liu <liuyacan@corp.netease.com>
Forgot to cc ubraun@linux.ibm.com
On 21/04/2022 13:58, liuyacan@corp.netease.com wrote: > From: Yacan Liu <liuyacan@corp.netease.com> > > Forgot to cc ubraun@linux.ibm.com No problem, its okay to add the current maintainers. Ursula left the company in the meantime.
Hello: This patch was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Thu, 21 Apr 2022 17:40:27 +0800 you wrote: > From: liuyacan <liuyacan@corp.netease.com> > > In the current implementation, when TCP initiates a connection > to an unavailable [ip,port], ECONNREFUSED will be stored in the > TCP socket, but SMC will not. However, some apps (like curl) use > getsockopt(,,SO_ERROR,,) to get the error information, which makes > them miss the error message and behave strangely. > > [...] Here is the summary with links: - [net] net/smc: sync err code when tcp connection was refused https://git.kernel.org/netdev/net/c/4e2e65e2e56c You are awesome, thank you!
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index fc7b6eb22..bbb1a4ce5 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -1475,6 +1475,8 @@ static void smc_connect_work(struct work_struct *work) smc->sk.sk_state = SMC_CLOSED; if (rc == -EPIPE || rc == -EAGAIN) smc->sk.sk_err = EPIPE; + else if (rc == -ECONNREFUSED) + smc->sk.sk_err = ECONNREFUSED; else if (signal_pending(current)) smc->sk.sk_err = -sock_intr_errno(timeo); sock_put(&smc->sk); /* passive closing */