[PATCH] drm/radeon: always set GEM function pointer

Alex Deucher alexdeucher at gmail.com
Mon Oct 7 18:38:34 UTC 2024


On Mon, Oct 7, 2024 at 2:33 PM Christian König
<ckoenig.leichtzumerken at gmail.com> wrote:
>
> Make sure to always set the GEM function pointer even for in kernel
> allocations. This fixes a NULL pointer deref caused by switching to GEM
> references.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> Fixes: fd69ef05029f ("drm/radeon: use GEM references instead of TTMs")

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/radeon/radeon_gem.c    | 3 ---
>  drivers/gpu/drm/radeon/radeon_object.c | 1 +
>  2 files changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
> index 9735f4968b86..bf2d4b16dc2a 100644
> --- a/drivers/gpu/drm/radeon/radeon_gem.c
> +++ b/drivers/gpu/drm/radeon/radeon_gem.c
> @@ -44,8 +44,6 @@ struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj);
>  int radeon_gem_prime_pin(struct drm_gem_object *obj);
>  void radeon_gem_prime_unpin(struct drm_gem_object *obj);
>
> -const struct drm_gem_object_funcs radeon_gem_object_funcs;
> -
>  static vm_fault_t radeon_gem_fault(struct vm_fault *vmf)
>  {
>         struct ttm_buffer_object *bo = vmf->vma->vm_private_data;
> @@ -132,7 +130,6 @@ int radeon_gem_object_create(struct radeon_device *rdev, unsigned long size,
>                 return r;
>         }
>         *obj = &robj->tbo.base;
> -       (*obj)->funcs = &radeon_gem_object_funcs;
>         robj->pid = task_pid_nr(current);
>
>         mutex_lock(&rdev->gem.mutex);
> diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
> index d0e4b43d155c..7672404fdb29 100644
> --- a/drivers/gpu/drm/radeon/radeon_object.c
> +++ b/drivers/gpu/drm/radeon/radeon_object.c
> @@ -151,6 +151,7 @@ int radeon_bo_create(struct radeon_device *rdev,
>         if (bo == NULL)
>                 return -ENOMEM;
>         drm_gem_private_object_init(rdev_to_drm(rdev), &bo->tbo.base, size);
> +       bo->tbo.base.funcs = &radeon_gem_object_funcs;
>         bo->rdev = rdev;
>         bo->surface_reg = -1;
>         INIT_LIST_HEAD(&bo->list);
> --
> 2.34.1
>


More information about the amd-gfx mailing list