A group ref is tied to the pending tiler_oom_work, so we need to release
it if the cancel was effective.

Fixes: de8548813824 ("drm/panthor: Add the scheduler logical block")
Reported-by: [email protected]
Closes: 
https://sashiko.dev/#/patchset/[email protected]?part=7
Signed-off-by: Boris Brezillon <[email protected]>
---
 drivers/gpu/drm/panthor/panthor_sched.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/panthor/panthor_sched.c 
b/drivers/gpu/drm/panthor/panthor_sched.c
index ab3e13e44a26..5fe95d03f23e 100644
--- a/drivers/gpu/drm/panthor/panthor_sched.c
+++ b/drivers/gpu/drm/panthor/panthor_sched.c
@@ -1057,7 +1057,8 @@ group_unbind_locked(struct panthor_group *group)
 
        /* Tiler OOM events will be re-issued next time the group is scheduled. 
*/
        atomic_set(&group->tiler_oom, 0);
-       cancel_work(&group->tiler_oom_work);
+       if (cancel_work(&group->tiler_oom_work))
+               group_put(group);
 
        for (u32 i = 0; i < group->queue_count; i++)
                group->queues[i]->doorbell_id = -1;

-- 
2.54.0

Reply via email to