diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-07-21 17:53:33 +0300 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-07-21 17:53:33 +0300 |
| commit | bcbef1e4a626e093d4ead56593fb169eed5033c7 (patch) | |
| tree | d17ab18b665433070a93c0cbd0d0291b0f262353 /io_uring/net.c | |
| parent | 103f5d8c35b3d22b700f1f6d585e499b2df62df6 (diff) | |
| parent | 89be9a83ccf1f88522317ce02f854f30d6115c41 (diff) | |
| download | linux-bcbef1e4a626e093d4ead56593fb169eed5033c7.tar.xz | |
Merge tag 'v6.16-rc7' into tty-next
We need the tty/serial fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'io_uring/net.c')
| -rw-r--r-- | io_uring/net.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/io_uring/net.c b/io_uring/net.c index 43a43522f406..bec8c6ed0a93 100644 --- a/io_uring/net.c +++ b/io_uring/net.c @@ -1738,9 +1738,11 @@ int io_connect(struct io_kiocb *req, unsigned int issue_flags) int ret; bool force_nonblock = issue_flags & IO_URING_F_NONBLOCK; - if (unlikely(req->flags & REQ_F_FAIL)) { - ret = -ECONNRESET; - goto out; + if (connect->in_progress) { + struct poll_table_struct pt = { ._key = EPOLLERR }; + + if (vfs_poll(req->file, &pt) & EPOLLERR) + goto get_sock_err; } file_flags = force_nonblock ? O_NONBLOCK : 0; @@ -1765,8 +1767,10 @@ int io_connect(struct io_kiocb *req, unsigned int issue_flags) * which means the previous result is good. For both of these, * grab the sock_error() and use that for the completion. */ - if (ret == -EBADFD || ret == -EISCONN) + if (ret == -EBADFD || ret == -EISCONN) { +get_sock_err: ret = sock_error(sock_from_file(req->file)->sk); + } } if (ret == -ERESTARTSYS) ret = -EINTR; |
