linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] rust: page: add `from_raw()`
@ 2026-01-28 13:22 Andreas Hindborg
  2026-01-28 13:30 ` Gary Guo
  0 siblings, 1 reply; 3+ messages in thread
From: Andreas Hindborg @ 2026-01-28 13:22 UTC (permalink / raw)
  To: Alice Ryhl, Lorenzo Stoakes, Liam R. Howlett, Miguel Ojeda,
	Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
	Trevor Gross, Danilo Krummrich
  Cc: linux-mm, rust-for-linux, linux-kernel, Andreas Hindborg,
	Andreas Hindborg

Add a method to `Page` that allows construction of a reference instance
from `struct page` pointer.

Signed-off-by: Andreas Hindborg <a.hindborg@samsung.com>
---
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
---
 rust/kernel/page.rs | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/rust/kernel/page.rs b/rust/kernel/page.rs
index 432fc0297d4a8..f666c92fcf451 100644
--- a/rust/kernel/page.rs
+++ b/rust/kernel/page.rs
@@ -176,6 +176,17 @@ pub fn nid(&self) -> i32 {
         unsafe { bindings::page_to_nid(self.as_ptr()) }
     }
 
+    /// Create a `&Page` from a raw `struct page` pointer
+    ///
+    /// # Safety
+    ///
+    /// `ptr` must be valid for use as a reference for the duration of `'a`.
+    pub unsafe fn from_raw<'a>(ptr: *mut bindings::page) -> &'a Self {
+        // SAFETY: By function safety requirements, ptr is not null and is
+        // valid for use as a reference.
+        unsafe { NonNull::new_unchecked(ptr).cast().as_ref() }
+    }
+
     /// Runs a piece of code with this page mapped to an address.
     ///
     /// The page is unmapped when this call returns.

---
base-commit: 63804fed149a6750ffd28610c5c1c98cce6bd377
change-id: 20260128-page-from-raw-e8e1f14e3f6d

Best regards,
-- 
Andreas Hindborg <a.hindborg@kernel.org>




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

end of thread, other threads:[~2026-01-28 14:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-28 13:22 [PATCH] rust: page: add `from_raw()` Andreas Hindborg
2026-01-28 13:30 ` Gary Guo
2026-01-28 14:14   ` Andreas Hindborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox