iov_iter: overlay struct iovec and ubuf/len
authorJens Axboe <axboe@kernel.dk>
Tue, 28 Mar 2023 20:21:06 +0000 (14:21 -0600)
committerJens Axboe <axboe@kernel.dk>
Thu, 30 Mar 2023 14:12:29 +0000 (08:12 -0600)
commit747b1f65d39ae729b7914075899b0c82d7f667db
treeb5d46fc0d7d9804008356a0c01630287a1b588a4
parentcd0bd57a9de59019fe99e9305a2337a66a4f9d39
iov_iter: overlay struct iovec and ubuf/len

Add an internal struct iovec that we can return as a pointer, with the
fields of the iovec overlapping with the ITER_UBUF ubuf and length
fields.

Then we can have iter_iov() check for the appropriate type, and return
&iter->__ubuf_iovec for ITER_UBUF and iter->__iov for ITER_IOVEC and
things will magically work out for a single segment request regardless
of either type.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/uio.h