* [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.