Currently we don't copy the associated iovecs when we punt to async context, and this can prove problematic if the caller only ensures the iovec is valid for the submission. This is a perfectly valid assumption, and I think io_uring should make sure that this is safe to do. First patch is a prep patch, second patch adds the necessary support for IORING_OP_READV and IORING_OP_WRITEV to handle this appropriately. We really need to do the same for the other calls that pass in pointers to structs, like sendmsg/recvmsg, connect, and accept. I will deal with those next. Also see: https://github.com/axboe/liburing/issues/27 -- Jens Axboe