]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/nouveau: Fix double call to drm_sched_entity_fini()
authorPhilipp Stanner <phasta@kernel.org>
Wed, 15 Apr 2026 14:49:57 +0000 (16:49 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Thu, 16 Apr 2026 19:34:00 +0000 (21:34 +0200)
nouveau_abi16_chan_fini() does invoke drm_sched_entity_fini() twice:
Once directly, and a second time through nouveau_sched_destroy().

That's likely undesired behavior and might be a bug since
drm_sched_entity_fini() decrements reference counts.

Fix the issue by using the appropriate function,
drm_sched_entity_kill(), to kill all remaining jobs within the entity.

Cc: stable@kernel.vger.org
Fixes: 9a0c32d698c1 ("drm/nouveau: don't fini scheduler if not initialized")
Suggested-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://patch.msgid.link/20260415144956.272506-3-phasta@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/gpu/drm/nouveau/nouveau_abi16.c

index 7860877d909b038fc49713b98489388a3b2658e2..291203121f0c25c8a89bb1544f19a98ab62389b2 100644 (file)
@@ -176,7 +176,7 @@ nouveau_abi16_chan_fini(struct nouveau_abi16 *abi16,
 
        /* Cancel all jobs from the entity's queue. */
        if (chan->sched)
-               drm_sched_entity_fini(&chan->sched->entity);
+               drm_sched_entity_kill(&chan->sched->entity);
 
        if (chan->chan)
                nouveau_channel_idle(chan->chan);