]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rust: iov: add iov_iter abstractions for ITER_DEST
authorAlice Ryhl <aliceryhl@google.com>
Fri, 22 Aug 2025 08:42:33 +0000 (08:42 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 6 Sep 2025 11:27:20 +0000 (13:27 +0200)
commitce2e0829241ab96af9c8a12b511debc5e3188934
treee40d3f13633d82fb847beabbadf86117d34c0c10
parent06cb58b310ea38a8135827f726157df59a95376e
rust: iov: add iov_iter abstractions for ITER_DEST

This adds abstractions for the iov_iter type in the case where
data_source is ITER_DEST. This will make Rust implementations of
fops->read_iter possible.

This series only has support for using existing IO vectors created by C
code. Additional abstractions will be needed to support the creation of
IO vectors in Rust code.

These abstractions make the assumption that `struct iov_iter` does not
have internal self-references, which implies that it is valid to move it
between different local variables.

This patch adds an IovIterDest struct that is very similar to the
IovIterSource from the previous patch. However, as the methods on the
two structs have very little overlap (just getting the length and
advance/revert), I do not think it is worth it to try and deduplicate
this logic.

Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250822-iov-iter-v5-2-6ce4819c2977@google.com
rust/kernel/iov.rs