lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 21 Apr 2022 17:40:27 +0800 From: liuyacan@...p.netease.com To: kgraul@...ux.ibm.com, davem@...emloft.net, kuba@...nel.org, pabeni@...hat.com Cc: linux-s390@...r.kernel.org, netdev@...r.kernel.org, linux-kernel@...r.kernel.org, liuyacan <liuyacan@...p.netease.com>, Tony Lu <tonylu@...ux.alibaba.com> Subject: [PATCH net] net/smc: sync err code when tcp connection was refused From: liuyacan <liuyacan@...p.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. Fixes: 50717a37db03 ("net/smc: nonblocking connect rework") Signed-off-by: liuyacan <liuyacan@...p.netease.com> Reviewed-by: Tony Lu <tonylu@...ux.alibaba.com> Acked-by: Karsten Graul <kgraul@...ux.ibm.com> --- net/smc/af_smc.c | 2 ++ 1 file changed, 2 insertions(+) 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 */ -- 2.20.1
Powered by blists - more mailing lists