[PATCH v3 0/3] rust: add `UnsafePinned` type

From: Christian Schrefl
Date: Sat May 10 2025 - 05:33:17 EST


This version now only has the kernel implementation without the
config flag for using the upstream version. Additionally now
commits for using `UnsafePinned` in `Opaque` were added.

Checkpatch warns about `rust/kernel/types/unsafe_pinned.rs`
missing a MAINTAINERS entry. This should be fine because it
will be included in the RUST entry.

This patchset is based on the pin-init-next branch.

Signed-off-by: Christian Schrefl <chrisi.schrefl@xxxxxxxxx>
---
Changes in v3:
- Dropped CONFIG_RUSTC_HAS_UNSAFE_PINNED and feature(unsafe_pinned) (Alice)
- Add comment to `Opaque` reasoning about included `UnsafeCell` (Benno)
- Small changes in commit message of Patch 3 (Benno)
- Removed docs mentioning not included functions (Benno)
- Removed docs mentioning implementation details and added that as
comment instead (Benno)
- Link to v2: https://lore.kernel.org/r/20250430-rust_unsafe_pinned-v2-0-fc8617a74024@xxxxxxxxx

Changes in v2:
- Expanded `UnsafePinned` documentation to describe differences
with upstream rust implementation.
- Removed config flag for using upstream `UnsafePinned` type.
- Add patch implementing `Wrapper` for `Opaque`
- Add patch for using `UnsafePinned` internally in `Opaque`
- Link to v1: https://lore.kernel.org/r/20250418-rust_unsafe_pinned-v1-1-c4c7558399f8@xxxxxxxxx

---
Christian Schrefl (3):
rust: add UnsafePinned type
rust: implement `Wrapper<T>` for `Opaque<T>`
rust: use `UnsafePinned` in the implementation of `Opaque`

rust/kernel/revocable.rs | 2 +
rust/kernel/types.rs | 45 ++++++++-------
rust/kernel/types/unsafe_pinned.rs | 113 +++++++++++++++++++++++++++++++++++++
3 files changed, 140 insertions(+), 20 deletions(-)
---
base-commit: 9de1a293c8ece00d226b21a35751ec178be2a9fa
change-id: 20250418-rust_unsafe_pinned-891dce27418d

Best regards,
--
Christian Schrefl <chrisi.schrefl@xxxxxxxxx>