net/smc: sync err code when tcp connection was refused
authorliuyacan <liuyacan@corp.netease.com>
Thu, 21 Apr 2022 09:40:27 +0000 (17:40 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 May 2022 07:03:25 +0000 (09:03 +0200)
commit69555bb27b2e62d2d0f48db6d40a7bd694c732ed
tree433f0145b4e27b20c85636fc2cd412a822d1952d
parentdaca23846eb3d5c831bc30a3da708854767ef7d1
net/smc: sync err code when tcp connection was refused

[ Upstream commit 4e2e65e2e56c6ceb4ea1719360080c0af083229e ]

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@corp.netease.com>
Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
Acked-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/smc/af_smc.c