diff options
author | Ursula Braun <ubraun@linux.ibm.com> | 2018-06-27 18:59:50 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-06-28 16:03:55 +0300 |
commit | 24ac3a08e65845a098140ff270229dec4a897404 (patch) | |
tree | 81c017a18cbff69130be4d721c517d60e7d0b3ab /drivers/sbus | |
parent | 15ecbe94a45ef88491ca459b26efdd02f91edb6d (diff) | |
download | linux-24ac3a08e65845a098140ff270229dec4a897404.tar.xz |
net/smc: rebuild nonblocking connect
The recent poll change may lead to stalls for non-blocking connecting
SMC sockets, since sock_poll_wait is no longer performed on the
internal CLC socket, but on the outer SMC socket. kernel_connect() on
the internal CLC socket returns with -EINPROGRESS, but the wake up
logic does not work in all cases. If the internal CLC socket is still
in state TCP_SYN_SENT when polled, sock_poll_wait() from sock_poll()
does not sleep. It is supposed to sleep till the state of the internal
CLC socket switches to TCP_ESTABLISHED.
This problem triggered a redesign of the SMC nonblocking connect logic.
This patch introduces a connect worker covering all connect steps
followed by a wake up of socket waiters. It allows to get rid of all
delays and locks in smc_poll().
Fixes: c0129a061442 ("smc: convert to ->poll_mask")
Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/sbus')
0 files changed, 0 insertions, 0 deletions