[PATCH v4 0/8] drm/sched: Fix memory leaks with cancel_job() callback

Philipp Stanner phasta at mailbox.org
Thu Jul 10 15:11:58 UTC 2025


On Thu, 2025-07-10 at 14:54 +0200, Philipp Stanner wrote:
> Changes in v4:
>   - Change dev_err() to dev_warn() in pending_list emptyness check.
> 
> Changes in v3:
>   - Remove forgotten copy-past artifacts. (Tvrtko)
>   - Remove forgotten done_list struct member. (Tvrtko)
>   - Slightly adjust commit message of patch 7.
>   - Add RBs. (Maira, Danilo, Tvrtko)
> 
> Changes in v2:
>   - Add new unit test to test cancel_job()'s behavior. (Tvrtko)
>   - Add RB from Maíra
> 
> Changes since the RFC:
>   - Rename helper function for drm_sched_fini(). (Tvrtko)
>   - Add Link to Tvrtko's RFC patch to patch 1.
> 
> 
> Since a long time, drm_sched_fini() can leak jobs that are still in
> drm_sched.pending_list.
> 
> This series solves the leaks in a backwards-compatible manner by
> adding
> a new, optional callback. If that callback is implemented, the
> scheduler
> uses it to cancel all jobs from pending_list and then frees them.
> 
> Philipp Stanner (8):
>   drm/panfrost: Fix scheduler workqueue bug
>   drm/sched: Avoid memory leaks with cancel_job() callback
>   drm/sched/tests: Implement cancel_job() callback
>   drm/sched/tests: Add unit test for cancel_job()
>   drm/sched: Warn if pending_list is not empty
>   drm/nouveau: Make fence container helper usable driver-wide
>   drm/nouveau: Add new callback for scheduler teardown
>   drm/nouveau: Remove waitque for sched teardown
> 
>  drivers/gpu/drm/nouveau/nouveau_fence.c       | 35 ++++++----
>  drivers/gpu/drm/nouveau/nouveau_fence.h       |  7 ++
>  drivers/gpu/drm/nouveau/nouveau_sched.c       | 35 ++++++----
>  drivers/gpu/drm/nouveau/nouveau_sched.h       |  9 +--
>  drivers/gpu/drm/nouveau/nouveau_uvmm.c        |  8 +--
>  drivers/gpu/drm/panfrost/panfrost_job.c       |  2 +-
>  drivers/gpu/drm/scheduler/sched_main.c        | 37 ++++++----
>  .../gpu/drm/scheduler/tests/mock_scheduler.c  | 68 +++++++----------
> --
>  drivers/gpu/drm/scheduler/tests/sched_tests.h |  1 -
>  drivers/gpu/drm/scheduler/tests/tests_basic.c | 42 ++++++++++++
>  include/drm/gpu_scheduler.h                   | 18 +++++
>  11 files changed, 167 insertions(+), 95 deletions(-)
> 


Pushed to drm-misc-next, with an RB from Tvrtko I had forgot, and
without the misplaced panfrost patch.

Thanks guys. Good to see that we finally solved this issue. Had been
around for quite some time. We celebrate that with a beer or sth at XDC
:)


P.



More information about the dri-devel mailing list