There's a few changes here: * The rename, of course (this should also let us drop the clippy annotation here) * Return *mut bindings::drm_gem_object instead of &Opaque<bindings::drm_gem_object> - the latter doesn't really have any benefit and just results in conversion from the rust type to the C type having to be more verbose than necessary.
Signed-off-by: Lyude Paul <ly...@redhat.com> --- rust/kernel/drm/gem/mod.rs | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/rust/kernel/drm/gem/mod.rs b/rust/kernel/drm/gem/mod.rs index f70531889c21f..55b2f1d056c39 100644 --- a/rust/kernel/drm/gem/mod.rs +++ b/rust/kernel/drm/gem/mod.rs @@ -42,8 +42,7 @@ pub trait IntoGEMObject: Sized + super::private::Sealed { /// Returns a reference to the raw `drm_gem_object` structure, which must be valid as long as /// this owning object is valid. - #[allow(clippy::wrong_self_convention)] - fn into_gem_obj(&self) -> &Opaque<bindings::drm_gem_object>; + fn as_gem_obj(&self) -> *mut bindings::drm_gem_object; /// Converts a pointer to a `struct drm_gem_object` into a reference to `Self`. /// @@ -99,8 +98,8 @@ extern "C" fn close_callback<T: BaseDriverObject<U>, U: BaseObject>( impl<T: DriverObject> IntoGEMObject for Object<T> { type Driver = T::Driver; - fn into_gem_obj(&self) -> &Opaque<bindings::drm_gem_object> { - &self.obj + fn as_gem_obj(&self) -> *mut bindings::drm_gem_object { + self.obj.get() } unsafe fn as_ref<'a>(self_ptr: *mut bindings::drm_gem_object) -> &'a Self { @@ -119,7 +118,7 @@ pub trait BaseObject fn size(&self) -> usize { // SAFETY: `self.into_gem_obj()` is guaranteed to be a pointer to a valid `struct // drm_gem_object`. - unsafe { (*self.into_gem_obj().get()).size } + unsafe { (*self.as_gem_obj()).size } } /// Creates a new handle for the object associated with a given `File` @@ -131,11 +130,7 @@ fn create_handle( let mut handle: u32 = 0; // SAFETY: The arguments are all valid per the type invariants. to_result(unsafe { - bindings::drm_gem_handle_create( - file.as_raw().cast(), - self.into_gem_obj().get(), - &mut handle, - ) + bindings::drm_gem_handle_create(file.as_raw().cast(), self.as_gem_obj(), &mut handle) })?; Ok(handle) } @@ -171,13 +166,11 @@ fn lookup_handle( /// Creates an mmap offset to map the object from userspace. fn create_mmap_offset(&self) -> Result<u64> { // SAFETY: The arguments are valid per the type invariant. - to_result(unsafe { bindings::drm_gem_create_mmap_offset(self.into_gem_obj().get()) })?; + to_result(unsafe { bindings::drm_gem_create_mmap_offset(self.as_gem_obj()) })?; // SAFETY: The arguments are valid per the type invariant. Ok(unsafe { - bindings::drm_vma_node_offset_addr(ptr::addr_of_mut!( - (*self.into_gem_obj().get()).vma_node - )) + bindings::drm_vma_node_offset_addr(ptr::addr_of_mut!((*self.as_gem_obj()).vma_node)) }) } } -- 2.48.1