From: Danilo Krummrich <dakr@kernel.org>
To: gregkh@linuxfoundation.org, rafael@kernel.org, ojeda@kernel.org,
alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net,
bjorn3_gh@protonmail.com, lossin@kernel.org,
a.hindborg@kernel.org, aliceryhl@google.com, tmgross@umich.edu,
viro@zeniv.linux.org.uk, brauner@kernel.org, jack@suse.cz,
arnd@arndb.de
Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, Danilo Krummrich <dakr@kernel.org>
Subject: [PATCH 3/3] rust: iov: take advantage from file::Offset
Date: Wed, 5 Nov 2025 01:22:50 +0100 [thread overview]
Message-ID: <20251105002346.53119-3-dakr@kernel.org> (raw)
In-Reply-To: <20251105002346.53119-1-dakr@kernel.org>
Make use of file::Offset, now that we have a dedicated type for it.
Suggested-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
---
rust/kernel/iov.rs | 13 +++++++++----
samples/rust/rust_misc_device.rs | 2 +-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/rust/kernel/iov.rs b/rust/kernel/iov.rs
index 43bae8923c46..a3b1233441b6 100644
--- a/rust/kernel/iov.rs
+++ b/rust/kernel/iov.rs
@@ -10,6 +10,7 @@
use crate::{
alloc::{Allocator, Flags},
bindings,
+ fs::file,
prelude::*,
types::Opaque,
};
@@ -292,8 +293,12 @@ pub fn copy_to_iter(&mut self, input: &[u8]) -> usize {
/// that the file will appear to contain `contents` even if takes multiple reads to read the
/// entire file.
#[inline]
- pub fn simple_read_from_buffer(&mut self, ppos: &mut i64, contents: &[u8]) -> Result<usize> {
- if *ppos < 0 {
+ pub fn simple_read_from_buffer(
+ &mut self,
+ ppos: &mut file::Offset,
+ contents: &[u8],
+ ) -> Result<usize> {
+ if ppos.is_negative() {
return Err(EINVAL);
}
let Ok(pos) = usize::try_from(*ppos) else {
@@ -306,8 +311,8 @@ pub fn simple_read_from_buffer(&mut self, ppos: &mut i64, contents: &[u8]) -> Re
// BOUNDS: We just checked that `pos < contents.len()` above.
let num_written = self.copy_to_iter(&contents[pos..]);
- // OVERFLOW: `pos+num_written <= contents.len() <= isize::MAX <= i64::MAX`.
- *ppos = (pos + num_written) as i64;
+ // OVERFLOW: `pos+num_written <= contents.len() <= isize::MAX <= file::Offset::MAX`.
+ *ppos += num_written as isize;
Ok(num_written)
}
diff --git a/samples/rust/rust_misc_device.rs b/samples/rust/rust_misc_device.rs
index 6a9f59ccf71d..edbcc761b4a2 100644
--- a/samples/rust/rust_misc_device.rs
+++ b/samples/rust/rust_misc_device.rs
@@ -187,7 +187,7 @@ fn read_iter(mut kiocb: Kiocb<'_, Self::Ptr>, iov: &mut IovIterDest<'_>) -> Resu
let inner = me.inner.lock();
// Read the buffer contents, taking the file position into account.
- let read = iov.simple_read_from_buffer(&mut kiocb.ki_pos_mut().0, &inner.buffer)?;
+ let read = iov.simple_read_from_buffer(kiocb.ki_pos_mut(), &inner.buffer)?;
Ok(read)
}
--
2.51.2
next prev parent reply other threads:[~2025-11-05 0:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-05 0:22 [PATCH 1/3] rust: fs: add a new type for file::Offset Danilo Krummrich
2025-11-05 0:22 ` [PATCH 2/3] rust fs: kiocb: take advantage from file::Offset Danilo Krummrich
2025-11-05 10:19 ` Alice Ryhl
2025-11-05 0:22 ` Danilo Krummrich [this message]
2025-11-05 10:21 ` [PATCH 3/3] rust: iov: " Alice Ryhl
2025-11-05 10:59 ` [PATCH 1/3] rust: fs: add a new type for file::Offset Christian Brauner
2025-11-05 11:19 ` Danilo Krummrich
2025-11-05 11:39 ` Danilo Krummrich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251105002346.53119-3-dakr@kernel.org \
--to=dakr@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=arnd@arndb.de \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=brauner@kernel.org \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rafael@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.