Message ID | 20220417123307.1094747-1-yacanliu@163.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net/smc: sync err info when TCP connection is refused | expand |
On Sun, Apr 17, 2022 at 08:33:07PM +0800, yacanliu@163.com 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. > > Signed-off-by: liuyacan <liuyacan@corp.netease.com> This fix works for me. I have tested it with curl for unavailable address. This patch missed net or net-next tag, I think net is preferred. Reviewed-by: Tony Lu <tonylu@linux.alibaba.com> Thank you, Tony Lu
On 19/04/2022 12:23, Tony Lu wrote: > On Sun, Apr 17, 2022 at 08:33:07PM +0800, yacanliu@163.com 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. >> >> Signed-off-by: liuyacan <liuyacan@corp.netease.com> > > This fix works for me. I have tested it with curl for unavailable > address. > > This patch missed net or net-next tag, I think net is preferred. > > Reviewed-by: Tony Lu <tonylu@linux.alibaba.com> > > Thank you, > Tony Lu Thank you both for the fix and the test! Acked-by: Karsten Graul <kgraul@linux.ibm.com>
On Sun, 2022-04-17 at 20:33 +0800, yacanliu@163.com 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. > > Signed-off-by: liuyacan <liuyacan@corp.netease.com> Could you please formally re-submit for -net (inclusing NET into the patch subj) with a suitable 'fixes' tag? You can retain the already collected reviewed/ack-by tags. Thanks! Paolo
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 */