io_uring: ensure recv and recvmsg handle MSG_WAITALL correctly
authorJens Axboe <axboe@kernel.dk>
Wed, 23 Mar 2022 15:32:35 +0000 (09:32 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 23 Mar 2022 22:40:20 +0000 (16:40 -0600)
commit7ba89d2af17aa879dda30f5d5d3f152e587fc551
treec702aa2fdea4a5ca0af2dd672e23ce890d8b20c0
parent4d55f238f8b89124f73e50abbd05e413def514fe
io_uring: ensure recv and recvmsg handle MSG_WAITALL correctly

We currently don't attempt to get the full asked for length even if
MSG_WAITALL is set, if we get a partial receive. If we do see a partial
receive, then just note how many bytes we did and return -EAGAIN to
get it retried.

The iov is advanced appropriately for the vector based case, and we
manually bump the buffer and remainder for the non-vector case.

Cc: stable@vger.kernel.org
Reported-by: Constantine Gavrilov <constantine.gavrilov@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c