Applied.  Thanks.

Alex

On Thu, Sep 10, 2026 at 6:08 AM Klara Modin <[email protected]> wrote:
>
> When the commit b67d2d039f64 ("drm/gem: Add callback for when handle
> count goes to 0") added the handle_free callback, it did not update the
> rust abstraction, which will cause a build failure when that is enabled.
> Rather than just adding another None initializer, use
> ..pin_init::zeroed() to make all unlisted callbacks None, and remove the
> existing zero-initializations.
>
> Fixes: b67d2d039f64 ("drm/gem: Add callback for when handle count goes to 0")
> Reported-by: Thorsten Leemhuis <[email protected]>
> Closes: 
> https://lore.kernel.org/all/[email protected]
> Reported-by: Thomas Zimmermann <[email protected]>
> Closes: 
> https://lore.kernel.org/all/[email protected]
> Suggested-by: Gary Guo <[email protected]>
> Signed-off-by: Klara Modin <[email protected]>
> ---
> v2:
> - also remove initialization of vm_ops, which is also handled by
>   ..pin_init::zeroed() (thanks Gary)
> - fix the same issue in the shmem helper (thanks Thomas, also reported
>   by Sashiko)
> - v1: 
> https://lore.kernel.org/lkml/[email protected]
> ---
>  rust/kernel/drm/gem/mod.rs   | 13 +------------
>  rust/kernel/drm/gem/shmem.rs |  5 +----
>  2 files changed, 2 insertions(+), 16 deletions(-)
>
> diff --git a/rust/kernel/drm/gem/mod.rs b/rust/kernel/drm/gem/mod.rs
> index 80d8f524f9d5..9d4280002765 100644
> --- a/rust/kernel/drm/gem/mod.rs
> +++ b/rust/kernel/drm/gem/mod.rs
> @@ -266,18 +266,7 @@ impl<T: DriverObject, Ctx: DeviceContext> Object<T, Ctx> 
> {
>          free: Some(Self::free_callback),
>          open: Some(open_callback::<T>),
>          close: Some(close_callback::<T>),
> -        print_info: None,
> -        export: None,
> -        pin: None,
> -        unpin: None,
> -        get_sg_table: None,
> -        vmap: None,
> -        vunmap: None,
> -        mmap: None,
> -        status: None,
> -        vm_ops: core::ptr::null_mut(),
> -        evict: None,
> -        rss: None,
> +        ..pin_init::zeroed()
>      };
>
>      /// Returns the `Device` that owns this GEM object.
> diff --git a/rust/kernel/drm/gem/shmem.rs b/rust/kernel/drm/gem/shmem.rs
> index a687d46d170d..24cb5343e0db 100644
> --- a/rust/kernel/drm/gem/shmem.rs
> +++ b/rust/kernel/drm/gem/shmem.rs
> @@ -132,19 +132,16 @@ impl<T: DriverObject> Object<T> {
>          open: Some(super::open_callback::<T>),
>          close: Some(super::close_callback::<T>),
>          print_info: Some(bindings::drm_gem_shmem_object_print_info),
> -        export: None,
>          pin: Some(bindings::drm_gem_shmem_object_pin),
>          unpin: Some(bindings::drm_gem_shmem_object_unpin),
>          get_sg_table: Some(bindings::drm_gem_shmem_object_get_sg_table),
>          vmap: Some(bindings::drm_gem_shmem_object_vmap),
>          vunmap: Some(bindings::drm_gem_shmem_object_vunmap),
>          mmap: Some(bindings::drm_gem_shmem_object_mmap),
> -        status: None,
> -        rss: None,
>          #[allow(unused_unsafe, reason = "Safe since Rust 1.82.0")]
>          // SAFETY: `drm_gem_shmem_vm_ops` is a valid, static const on the C 
> side.
>          vm_ops: unsafe { &raw const bindings::drm_gem_shmem_vm_ops },
> -        evict: None,
> +        ..pin_init::zeroed()
>      };
>
>      /// Return a raw pointer to the embedded drm_gem_shmem_object.
> --
> 2.55.0
>

Reply via email to