[PATCH 4/4] rust: drm: don't pass the address of drm::Device to drm_dev_put()
Alice Ryhl
aliceryhl at google.com
Fri Aug 1 09:13:16 UTC 2025
On Thu, Jul 31, 2025 at 05:48:09PM +0200, Danilo Krummrich wrote:
> In drm_dev_put() call in AlwaysRefCounted::dec_ref() we rely on struct
> drm_device to be the first field in drm::Device, whereas everywhere
> else we correctly obtain the address of the actual struct drm_device.
>
> Analogous to the from_drm_device() helper, provide the
> into_drm_device() helper in order to address this.
>
> Fixes: 1e4b8896c0f3 ("rust: drm: add device abstraction")
> Signed-off-by: Danilo Krummrich <dakr at kernel.org>
> + /// # Safety
> + ///
> + /// `ptr` must be a valid pointer to `Self`.
> + unsafe fn into_drm_device(ptr: NonNull<Self>) -> *mut bindings::drm_device {
> + // SAFETY: By the safety requirements of this function, `ptr` is a valid pointer to `Self`.
> + unsafe { &raw mut (*ptr.as_ptr()).dev }.cast()
> + }
I think it would somewhat more consistent to use the naming raw_get() or
cast_into(), but I am ok with this naming too.
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Alice
More information about the dri-devel
mailing list