All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH next] drm/amdgpu/userq: Fix error codes in mes_userq_mqd_create()
@ 2025-09-18  9:46 Dan Carpenter
  2025-09-18  9:57 ` Christian König
  0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2025-09-18  9:46 UTC (permalink / raw)
  To: Prike Liang
  Cc: Alex Deucher, Christian König, David Airlie, Simona Vetter,
	Shashank Sharma, Arvind Yadav, Sunil Khatri, Jesse.Zhang,
	Arunpravin Paneer Selvam, amd-gfx, dri-devel, linux-kernel,
	kernel-janitors

Return the error code if amdgpu_userq_input_va_validate() fails.  Don't
return success.

Fixes: 9e46b8bb0539 ("drm/amdgpu: validate userq buffer virtual address and size")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
index 2db9b2c63693..775b0bd5d6c4 100644
--- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
+++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
@@ -298,8 +298,9 @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
 			goto free_mqd;
 		}
 
-		if (amdgpu_userq_input_va_validate(queue->vm, compute_mqd->eop_va,
-		    max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE)))
+		r = amdgpu_userq_input_va_validate(queue->vm, compute_mqd->eop_va,
+		    max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE));
+		if (r)
 			goto free_mqd;
 
 		userq_props->eop_gpu_addr = compute_mqd->eop_va;
@@ -330,8 +331,9 @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
 		userq_props->tmz_queue =
 			mqd_user->flags & AMDGPU_USERQ_CREATE_FLAGS_QUEUE_SECURE;
 
-		if (amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11->shadow_va,
-		    shadow_info.shadow_size))
+		r = amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11->shadow_va,
+		    shadow_info.shadow_size);
+		if (r)
 			goto free_mqd;
 
 		kfree(mqd_gfx_v11);
@@ -351,8 +353,9 @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
 			goto free_mqd;
 		}
 
-		if (amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11->csa_va,
-		    shadow_info.csa_size))
+		r = amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11->csa_va,
+		    shadow_info.csa_size);
+		if (r)
 			goto free_mqd;
 
 		userq_props->csa_addr = mqd_sdma_v11->csa_va;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH next] drm/amdgpu/userq: Fix error codes in mes_userq_mqd_create()
  2025-09-18  9:46 [PATCH next] drm/amdgpu/userq: Fix error codes in mes_userq_mqd_create() Dan Carpenter
@ 2025-09-18  9:57 ` Christian König
  2025-09-19  2:50   ` Liang, Prike
  0 siblings, 1 reply; 4+ messages in thread
From: Christian König @ 2025-09-18  9:57 UTC (permalink / raw)
  To: Dan Carpenter, Prike Liang
  Cc: Alex Deucher, David Airlie, Simona Vetter, Shashank Sharma,
	Arvind Yadav, Sunil Khatri, Jesse.Zhang, Arunpravin Paneer Selvam,
	amd-gfx, dri-devel, linux-kernel, kernel-janitors



On 18.09.25 11:46, Dan Carpenter wrote:
> Return the error code if amdgpu_userq_input_va_validate() fails.  Don't
> return success.
> 
> Fixes: 9e46b8bb0539 ("drm/amdgpu: validate userq buffer virtual address and size")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
>  drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> index 2db9b2c63693..775b0bd5d6c4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> @@ -298,8 +298,9 @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
>  			goto free_mqd;
>  		}
>  
> -		if (amdgpu_userq_input_va_validate(queue->vm, compute_mqd->eop_va,
> -		    max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE)))
> +		r = amdgpu_userq_input_va_validate(queue->vm, compute_mqd->eop_va,
> +		    max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE));

That code is nonsense to begin with, AMDGPU_GPU_PAGE_SIZE is always <= PAGE_SIZE or otherwise the whole driver stack doesn't work.

We should probably drop the max_t() as well.

Regards,
Christian.

> +		if (r)
>  			goto free_mqd;
>  
>  		userq_props->eop_gpu_addr = compute_mqd->eop_va;
> @@ -330,8 +331,9 @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
>  		userq_props->tmz_queue =
>  			mqd_user->flags & AMDGPU_USERQ_CREATE_FLAGS_QUEUE_SECURE;
>  
> -		if (amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11->shadow_va,
> -		    shadow_info.shadow_size))
> +		r = amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11->shadow_va,
> +		    shadow_info.shadow_size);
> +		if (r)
>  			goto free_mqd;
>  
>  		kfree(mqd_gfx_v11);
> @@ -351,8 +353,9 @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
>  			goto free_mqd;
>  		}
>  
> -		if (amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11->csa_va,
> -		    shadow_info.csa_size))
> +		r = amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11->csa_va,
> +		    shadow_info.csa_size);
> +		if (r)
>  			goto free_mqd;
>  
>  		userq_props->csa_addr = mqd_sdma_v11->csa_va;


^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH next] drm/amdgpu/userq: Fix error codes in mes_userq_mqd_create()
  2025-09-18  9:57 ` Christian König
@ 2025-09-19  2:50   ` Liang, Prike
  2025-09-29  6:15     ` Liang, Prike
  0 siblings, 1 reply; 4+ messages in thread
From: Liang, Prike @ 2025-09-19  2:50 UTC (permalink / raw)
  To: Koenig, Christian, Dan Carpenter
  Cc: Deucher, Alexander, David Airlie, Simona Vetter, Sharma, Shashank,
	Arvind Yadav, Khatri, Sunil, Zhang, Jesse(Jie),
	Paneer Selvam, Arunpravin, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	kernel-janitors@vger.kernel.org

[Public]

Regards,
      Prike

> -----Original Message-----
> From: Koenig, Christian <Christian.Koenig@amd.com>
> Sent: Thursday, September 18, 2025 5:57 PM
> To: Dan Carpenter <dan.carpenter@linaro.org>; Liang, Prike
> <Prike.Liang@amd.com>
> Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; David Airlie
> <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Sharma, Shashank
> <Shashank.Sharma@amd.com>; Arvind Yadav <Arvind.Yadav@amd.com>; Khatri,
> Sunil <Sunil.Khatri@amd.com>; Zhang, Jesse(Jie) <Jesse.Zhang@amd.com>;
> Paneer Selvam, Arunpravin <Arunpravin.PaneerSelvam@amd.com>; amd-
> gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; linux-
> kernel@vger.kernel.org; kernel-janitors@vger.kernel.org
> Subject: Re: [PATCH next] drm/amdgpu/userq: Fix error codes in
> mes_userq_mqd_create()
>
>
>
> On 18.09.25 11:46, Dan Carpenter wrote:
> > Return the error code if amdgpu_userq_input_va_validate() fails.
> > Don't return success.
> >
> > Fixes: 9e46b8bb0539 ("drm/amdgpu: validate userq buffer virtual
> > address and size")
> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 15 +++++++++------
> >  1 file changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > index 2db9b2c63693..775b0bd5d6c4 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > @@ -298,8 +298,9 @@ static int mes_userq_mqd_create(struct
> amdgpu_userq_mgr *uq_mgr,
> >                     goto free_mqd;
> >             }
> >
> > -           if (amdgpu_userq_input_va_validate(queue->vm, compute_mqd-
> >eop_va,
> > -               max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE)))
> > +           r = amdgpu_userq_input_va_validate(queue->vm, compute_mqd-
> >eop_va,
> > +               max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE));
>
> That code is nonsense to begin with, AMDGPU_GPU_PAGE_SIZE is always <=
> PAGE_SIZE or otherwise the whole driver stack doesn't work.
>
> We should probably drop the max_t() as well.

The userq EOP buffer size is determined by the Mesa driver using dev_info->gart_page_size.
Accordingly, we align the expected userq EOP size with dev_info->gart_page_size and use
it to verify that the EOP buffer whether is resident within a valid mapping range.

Thanks,
Prike
> Regards,
> Christian.
>
> > +           if (r)
> >                     goto free_mqd;
> >
> >             userq_props->eop_gpu_addr = compute_mqd->eop_va; @@ -330,8
> +331,9
> > @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
> >             userq_props->tmz_queue =
> >                     mqd_user->flags &
> AMDGPU_USERQ_CREATE_FLAGS_QUEUE_SECURE;
> >
> > -           if (amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11-
> >shadow_va,
> > -               shadow_info.shadow_size))
> > +           r = amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11-
> >shadow_va,
> > +               shadow_info.shadow_size);
> > +           if (r)
> >                     goto free_mqd;
> >
> >             kfree(mqd_gfx_v11);
> > @@ -351,8 +353,9 @@ static int mes_userq_mqd_create(struct
> amdgpu_userq_mgr *uq_mgr,
> >                     goto free_mqd;
> >             }
> >
> > -           if (amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11-
> >csa_va,
> > -               shadow_info.csa_size))
> > +           r = amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11-
> >csa_va,
> > +               shadow_info.csa_size);
> > +           if (r)
> >                     goto free_mqd;
> >
> >             userq_props->csa_addr = mqd_sdma_v11->csa_va;


^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH next] drm/amdgpu/userq: Fix error codes in mes_userq_mqd_create()
  2025-09-19  2:50   ` Liang, Prike
@ 2025-09-29  6:15     ` Liang, Prike
  0 siblings, 0 replies; 4+ messages in thread
From: Liang, Prike @ 2025-09-29  6:15 UTC (permalink / raw)
  To: Koenig, Christian, Dan Carpenter
  Cc: Deucher, Alexander, David Airlie, Simona Vetter, Sharma, Shashank,
	Arvind Yadav, Khatri, Sunil, Zhang, Jesse(Jie),
	Paneer Selvam, Arunpravin, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	kernel-janitors@vger.kernel.org

[Public]

Regards,
      Prike

> -----Original Message-----
> From: Liang, Prike
> Sent: Friday, September 19, 2025 10:51 AM
> To: Koenig, Christian <Christian.Koenig@amd.com>; Dan Carpenter
> <dan.carpenter@linaro.org>
> Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; David Airlie
> <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Sharma, Shashank
> <Shashank.Sharma@amd.com>; Arvind Yadav <Arvind.Yadav@amd.com>; Khatri,
> Sunil <Sunil.Khatri@amd.com>; Zhang, Jesse(Jie) <Jesse.Zhang@amd.com>;
> Paneer Selvam, Arunpravin <Arunpravin.PaneerSelvam@amd.com>; amd-
> gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; linux-
> kernel@vger.kernel.org; kernel-janitors@vger.kernel.org
> Subject: RE: [PATCH next] drm/amdgpu/userq: Fix error codes in
> mes_userq_mqd_create()
>
>
>
> Regards,
>       Prike
>
> > -----Original Message-----
> > From: Koenig, Christian <Christian.Koenig@amd.com>
> > Sent: Thursday, September 18, 2025 5:57 PM
> > To: Dan Carpenter <dan.carpenter@linaro.org>; Liang, Prike
> > <Prike.Liang@amd.com>
> > Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; David Airlie
> > <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Sharma, Shashank
> > <Shashank.Sharma@amd.com>; Arvind Yadav <Arvind.Yadav@amd.com>;
> > Khatri, Sunil <Sunil.Khatri@amd.com>; Zhang, Jesse(Jie)
> > <Jesse.Zhang@amd.com>; Paneer Selvam, Arunpravin
> > <Arunpravin.PaneerSelvam@amd.com>; amd- gfx@lists.freedesktop.org;
> > dri-devel@lists.freedesktop.org; linux- kernel@vger.kernel.org;
> > kernel-janitors@vger.kernel.org
> > Subject: Re: [PATCH next] drm/amdgpu/userq: Fix error codes in
> > mes_userq_mqd_create()
> >
> >
> >
> > On 18.09.25 11:46, Dan Carpenter wrote:
> > > Return the error code if amdgpu_userq_input_va_validate() fails.
> > > Don't return success.
> > >
> > > Fixes: 9e46b8bb0539 ("drm/amdgpu: validate userq buffer virtual
> > > address and size")
> > > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> > > ---
> > >  drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 15 +++++++++------
> > >  1 file changed, 9 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > > b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > > index 2db9b2c63693..775b0bd5d6c4 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> > > @@ -298,8 +298,9 @@ static int mes_userq_mqd_create(struct
> > amdgpu_userq_mgr *uq_mgr,
> > >                   goto free_mqd;
> > >           }
> > >
> > > -         if (amdgpu_userq_input_va_validate(queue->vm, compute_mqd-
> > >eop_va,
> > > -             max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE)))
> > > +         r = amdgpu_userq_input_va_validate(queue->vm, compute_mqd-
> > >eop_va,
> > > +             max_t(u32, PAGE_SIZE, AMDGPU_GPU_PAGE_SIZE));
> >
> > That code is nonsense to begin with, AMDGPU_GPU_PAGE_SIZE is always <=
> > PAGE_SIZE or otherwise the whole driver stack doesn't work.
> >
> > We should probably drop the max_t() as well.
>
> The userq EOP buffer size is determined by the Mesa driver using dev_info-
> >gart_page_size.
> Accordingly, we align the expected userq EOP size with dev_info->gart_page_size
> and use it to verify that the EOP buffer whether is resident within a valid mapping
> range.
We could assign the return code inline in the if() condition. I’ll incorporate this and make it explicit in the following VA track patch sets.

Regards,
  Prike
> Thanks,
> Prike
> > Regards,
> > Christian.
> >
> > > +         if (r)
> > >                   goto free_mqd;
> > >
> > >           userq_props->eop_gpu_addr = compute_mqd->eop_va; @@ -330,8
> > +331,9
> > > @@ static int mes_userq_mqd_create(struct amdgpu_userq_mgr *uq_mgr,
> > >           userq_props->tmz_queue =
> > >                   mqd_user->flags &
> > AMDGPU_USERQ_CREATE_FLAGS_QUEUE_SECURE;
> > >
> > > -         if (amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11-
> > >shadow_va,
> > > -             shadow_info.shadow_size))
> > > +         r = amdgpu_userq_input_va_validate(queue->vm, mqd_gfx_v11-
> > >shadow_va,
> > > +             shadow_info.shadow_size);
> > > +         if (r)
> > >                   goto free_mqd;
> > >
> > >           kfree(mqd_gfx_v11);
> > > @@ -351,8 +353,9 @@ static int mes_userq_mqd_create(struct
> > amdgpu_userq_mgr *uq_mgr,
> > >                   goto free_mqd;
> > >           }
> > >
> > > -         if (amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11-
> > >csa_va,
> > > -             shadow_info.csa_size))
> > > +         r = amdgpu_userq_input_va_validate(queue->vm, mqd_sdma_v11-
> > >csa_va,
> > > +             shadow_info.csa_size);
> > > +         if (r)
> > >                   goto free_mqd;
> > >
> > >           userq_props->csa_addr = mqd_sdma_v11->csa_va;


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-09-29  6:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-18  9:46 [PATCH next] drm/amdgpu/userq: Fix error codes in mes_userq_mqd_create() Dan Carpenter
2025-09-18  9:57 ` Christian König
2025-09-19  2:50   ` Liang, Prike
2025-09-29  6:15     ` Liang, Prike

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.