diff mbox series

[v3] drm/amdgpu: add a missing lock for AMDGPU_SCHED

Message ID 20230426225458.877481-1-olvaffe@gmail.com (mailing list archive)
State New, archived
Headers show
Series [v3] drm/amdgpu: add a missing lock for AMDGPU_SCHED | expand

Commit Message

Chia-I Wu April 26, 2023, 10:54 p.m. UTC
mgr->ctx_handles should be protected by mgr->lock.

v2: improve commit message
v3: add a Fixes tag

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Fixes: 52c6a62c64fac ("drm/amdgpu: add interface for editing a foreign process's priority v3")
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Alex Deucher April 27, 2023, 6:50 p.m. UTC | #1
Applied.  Thanks!

Alex

On Wed, Apr 26, 2023 at 6:55 PM Chia-I Wu <olvaffe@gmail.com> wrote:
>
> mgr->ctx_handles should be protected by mgr->lock.
>
> v2: improve commit message
> v3: add a Fixes tag
>
> Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
> Reviewed-by: Christian König <christian.koenig@amd.com>
> Fixes: 52c6a62c64fac ("drm/amdgpu: add interface for editing a foreign process's priority v3")
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
> index e9b45089a28a6..863b2a34b2d64 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
> @@ -38,6 +38,7 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
>  {
>         struct fd f = fdget(fd);
>         struct amdgpu_fpriv *fpriv;
> +       struct amdgpu_ctx_mgr *mgr;
>         struct amdgpu_ctx *ctx;
>         uint32_t id;
>         int r;
> @@ -51,8 +52,11 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
>                 return r;
>         }
>
> -       idr_for_each_entry(&fpriv->ctx_mgr.ctx_handles, ctx, id)
> +       mgr = &fpriv->ctx_mgr;
> +       mutex_lock(&mgr->lock);
> +       idr_for_each_entry(&mgr->ctx_handles, ctx, id)
>                 amdgpu_ctx_priority_override(ctx, priority);
> +       mutex_unlock(&mgr->lock);
>
>         fdput(f);
>         return 0;
> --
> 2.40.1.495.gc816e09b53d-goog
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
index e9b45089a28a6..863b2a34b2d64 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
@@ -38,6 +38,7 @@  static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
 {
 	struct fd f = fdget(fd);
 	struct amdgpu_fpriv *fpriv;
+	struct amdgpu_ctx_mgr *mgr;
 	struct amdgpu_ctx *ctx;
 	uint32_t id;
 	int r;
@@ -51,8 +52,11 @@  static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
 		return r;
 	}
 
-	idr_for_each_entry(&fpriv->ctx_mgr.ctx_handles, ctx, id)
+	mgr = &fpriv->ctx_mgr;
+	mutex_lock(&mgr->lock);
+	idr_for_each_entry(&mgr->ctx_handles, ctx, id)
 		amdgpu_ctx_priority_override(ctx, priority);
+	mutex_unlock(&mgr->lock);
 
 	fdput(f);
 	return 0;