By passing IO_MSG_FIXED with msg_flags teaches send(), recv(), sendmsg() and recvmsg() to work with registered buffers. In that case sqe->buf_index should contain a valid registered buffer index, and an iov or an immediate {ptr,len} pair for recv/send have to point to a buffer as it's with rw. As unused bits in msg_flags are never checked by the net stack, I'd probably need to flag it somehow else. That's mainly for interested to toy with zerocopy, thus RFC, though may be useful regardless. Based on 5.11 + 2 my send/recvmsg cleanup patches of the same day. Pavel Begunkov (5): io_uring: move io_recvmsg_copy_hdr() io_uring: copy hdr consistently for send and recv io_uring: opcode independent import_fixed io_uring: send/recv with registered buffer io_uring: sendmsg/recvmsg with registered buffers fs/io_uring.c | 321 +++++++++++++++++++++++++++----------------------- 1 file changed, 171 insertions(+), 150 deletions(-) -- 2.24.0