• Jens Axboe's avatar
    io_uring: fix sporadic -EFAULT from IORING_OP_RECVMSG · 0b416c3e
    Jens Axboe authored
    If we have to punt the recvmsg to async context, we copy all the
    context.  But since the iovec used can be either on-stack (if small) or
    dynamically allocated, if it's on-stack, then we need to ensure we reset
    the iov pointer. If we don't, then we're reusing old stack data, and
    that can lead to -EFAULTs if things get overwritten.
    
    Ensure we retain the right pointers for the iov, and free it as well if
    we end up having to go beyond UIO_FASTIOV number of vectors.
    
    Fixes: 03b1230c ("io_uring: ensure async punted sendmsg/recvmsg requests copy data")
    Reported-by: default avatar李通洲 <carter.li@eoitek.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    0b416c3e
io_uring.c 125 KB