io_uring: handle connect -EINPROGRESS like -EAGAIN
authorJens Axboe <axboe@kernel.dk>
Tue, 3 Dec 2019 18:23:54 +0000 (11:23 -0700)
committerJens Axboe <axboe@kernel.dk>
Tue, 3 Dec 2019 18:23:54 +0000 (11:23 -0700)
Right now we return it to userspace, which means the application has
to poll for the socket to be writeable. Let's just treat it like
-EAGAIN and have io_uring handle it internally, this makes it much
easier to use.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index f7985f2..6c22a27 100644 (file)
@@ -2242,7 +2242,7 @@ static int io_connect(struct io_kiocb *req, const struct io_uring_sqe *sqe,
 
        ret = __sys_connect_file(req->file, &io->connect.address, addr_len,
                                        file_flags);
-       if (ret == -EAGAIN && force_nonblock) {
+       if ((ret == -EAGAIN || ret == -EINPROGRESS) && force_nonblock) {
                io = kmalloc(sizeof(*io), GFP_KERNEL);
                if (!io) {
                        ret = -ENOMEM;