2023-05-17 13:21:38

by Vladislav Efanov

[permalink] [raw]
Subject: [PATCH] drm/sched: Remove redundant check

The rq pointer points inside the drm_gpu_scheduler structure. Thus
it can't be NULL.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: c61cdbdbffc1 ("drm/scheduler: Fix hang when sched_entity released")
Signed-off-by: Vladislav Efanov <[email protected]>
---
drivers/gpu/drm/scheduler/sched_main.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index 8c183639603e..aea5a90ff98b 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -1141,9 +1141,6 @@ void drm_sched_fini(struct drm_gpu_scheduler *sched)
for (i = DRM_SCHED_PRIORITY_COUNT - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) {
struct drm_sched_rq *rq = &sched->sched_rq[i];

- if (!rq)
- continue;
-
spin_lock(&rq->lock);
list_for_each_entry(s_entity, &rq->entities, list)
/*
--
2.34.1



2023-05-19 13:47:43

by Luben Tuikov

[permalink] [raw]
Subject: Re: [PATCH] drm/sched: Remove redundant check

Thanks!

Reviewed-by: Luben Tuikov <[email protected]>

Applied to drm-misc-fixes.

Regards,
Luben

On 2023-05-17 08:52, Vladislav Efanov wrote:
> The rq pointer points inside the drm_gpu_scheduler structure. Thus
> it can't be NULL.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Fixes: c61cdbdbffc1 ("drm/scheduler: Fix hang when sched_entity released")
> Signed-off-by: Vladislav Efanov <[email protected]>
> ---
> drivers/gpu/drm/scheduler/sched_main.c | 3 ---
> 1 file changed, 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index 8c183639603e..aea5a90ff98b 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1141,9 +1141,6 @@ void drm_sched_fini(struct drm_gpu_scheduler *sched)
> for (i = DRM_SCHED_PRIORITY_COUNT - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) {
> struct drm_sched_rq *rq = &sched->sched_rq[i];
>
> - if (!rq)
> - continue;
> -
> spin_lock(&rq->lock);
> list_for_each_entry(s_entity, &rq->entities, list)
> /*