diff options
Diffstat (limited to 'rust/kernel/device.rs')
| -rw-r--r-- | rust/kernel/device.rs | 15 | 
1 files changed, 3 insertions, 12 deletions
| diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 851018eef885..c8199ee079ef 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -51,18 +51,9 @@ impl Device {      ///      /// It must also be ensured that `bindings::device::release` can be called from any thread.      /// While not officially documented, this should be the case for any `struct device`. -    pub unsafe fn from_raw(ptr: *mut bindings::device) -> ARef<Self> { -        // SAFETY: By the safety requirements, ptr is valid. -        // Initially increase the reference count by one to compensate for the final decrement once -        // this newly created `ARef<Device>` instance is dropped. -        unsafe { bindings::get_device(ptr) }; - -        // CAST: `Self` is a `repr(transparent)` wrapper around `bindings::device`. -        let ptr = ptr.cast::<Self>(); - -        // SAFETY: `ptr` is valid by the safety requirements of this function. By the above call to -        // `bindings::get_device` we also own a reference to the underlying `struct device`. -        unsafe { ARef::from_raw(ptr::NonNull::new_unchecked(ptr)) } +    pub unsafe fn get_device(ptr: *mut bindings::device) -> ARef<Self> { +        // SAFETY: By the safety requirements ptr is valid +        unsafe { Self::as_ref(ptr) }.into()      }      /// Obtain the raw `struct device *`. | 
