rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/2] strncpy_from_user for Rust
@ 2025-05-27 12:34 Alice Ryhl
  2025-05-27 12:34 ` [PATCH v4 1/2] uaccess: rust: add strncpy_from_user Alice Ryhl
  2025-05-27 12:34 ` [PATCH v4 2/2] uaccess: rust: add UserSliceReader::strcpy_into_buf Alice Ryhl
  0 siblings, 2 replies; 17+ messages in thread
From: Alice Ryhl @ 2025-05-27 12:34 UTC (permalink / raw)
  To: Miguel Ojeda, Andrew Morton, Alexander Viro, Greg Kroah-Hartman
  Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
	Andreas Hindborg, Trevor Gross, Danilo Krummrich, rust-for-linux,
	linux-kernel, Alice Ryhl

There is currently no easy way to read NUL-terminated strings from
userspace. Trying to use the ordinary read function on an array of the
maximum length doesn't work because it could fail with EFAULT when the C
string is shorter than the maximum length. In this case,
strncpy_from_user is better because it doesn't return EFAULT even if it
encounters a page fault on bytes that are after the NUL-terminator but
before the maximum length.

Signed-off-by: Alice Ryhl <aliceryhl@google.com>
---
Changes in v4:
- Swap order of arguments to raw_strncpy_from_user, and rename buf to
  dst.
- Update safety comment on CStr::from_bytes_with_nul_unchecked.
- Add `` in "This implies that len == dst.len() < buf.len()."
- Pick up Reviewed-by tags.
- Link to v3: https://lore.kernel.org/r/20250505-strncpy-from-user-v3-0-85c677fd4f91@google.com

Changes in v3:
- Remove pub from raw_strncpy_from_user.
- Mention that some data may have been copied on EFAULT.
- Add more comments to strcpy_into_buf about tricky cases.
- Rewrite documentation of strcpy_into_buf.
- Add documentation alias.
- Pick up Reviewed-by tags.
- Link to v2: https://lore.kernel.org/r/20250429-strncpy-from-user-v2-0-7e6facac0bf0@google.com

Changes in v2:
- Rename the raw wrapper around strncpy_from_user to raw_strncpy_from_user.
- Add a more convenient helper on top that adds the missing
  NUL-terminator when necessary.
- Link to v1: https://lore.kernel.org/r/20250424-strncpy-from-user-v1-1-f983fe21685a@google.com

---
Alice Ryhl (2):
      uaccess: rust: add strncpy_from_user
      uaccess: rust: add UserSliceReader::strcpy_into_buf

 rust/kernel/uaccess.rs | 89 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 88 insertions(+), 1 deletion(-)
---
base-commit: 9c32cda43eb78f78c73aee4aa344b777714e259b
change-id: 20250424-strncpy-from-user-1f2d06b0cdde

Best regards,
-- 
Alice Ryhl <aliceryhl@google.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2025-06-02  8:30 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-27 12:34 [PATCH v4 0/2] strncpy_from_user for Rust Alice Ryhl
2025-05-27 12:34 ` [PATCH v4 1/2] uaccess: rust: add strncpy_from_user Alice Ryhl
2025-05-30 11:32   ` Benno Lossin
2025-05-30 11:57     ` Greg Kroah-Hartman
2025-06-02  8:29     ` Alice Ryhl
2025-05-30 18:13   ` Benno Lossin
2025-05-31 13:27     ` Alice Ryhl
2025-05-31 15:24       ` Benno Lossin
2025-05-27 12:34 ` [PATCH v4 2/2] uaccess: rust: add UserSliceReader::strcpy_into_buf Alice Ryhl
2025-05-30 18:16   ` Benno Lossin
2025-05-31 13:25     ` Alice Ryhl
2025-05-31 15:25       ` Benno Lossin
2025-05-31 17:38         ` Alice Ryhl
2025-05-31 20:38           ` Benno Lossin
2025-05-31 21:09             ` Alice Ryhl
2025-06-01 16:09               ` Benno Lossin
2025-06-02  8:30                 ` Alice Ryhl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).