linux/drivers/accel/rocket
ZhaoJinming 9b2dedadf6 accel/rocket: Fix error path handling in rocket_job_run()
In rocket_job_run(), after taking an extra fence reference for
job->done_fence via dma_fence_get(), the error paths have three bugs:

- The dma_fence reference held by job->done_fence is never released,
  causing a reference leak.
- pm_runtime_get_sync() increments the usage counter even on failure,
  but the error path does not decrement it, leaking the runtime PM
  reference and preventing the NPU from suspending.
- A valid but unsignaled fence is returned to the DRM scheduler,
  which triggers WARN("Fence ... released with pending signals!")
  when the scheduler drops its reference.

Fix by replacing pm_runtime_get_sync() with pm_runtime_resume_and_get()
which auto-balances the usage counter on failure, releasing both fence
references on error, and returning ERR_PTR(ret) instead of the
unsignaled fence.

Cc: stable@vger.kernel.org
Fixes: 0810d5ad88 ("accel/rocket: Add job submission IOCTL")
Signed-off-by: ZhaoJinming <zhaojinming@uniontech.com>
Link: https://lore.kernel.org/r/20260610071045.3414828-1-zhaojinming@uniontech.com
[tomeu: Refactored error paths to use consolidated goto labels]
Signed-off-by: Tomeu Vizoso <tomeu@tomeuvizoso.net>
2026-07-04 10:28:23 +02:00
..
Kconfig accel/rocket: Depend on DRM_ACCEL not just DRM 2025-09-01 12:11:28 +02:00
Makefile accel/rocket: Add job submission IOCTL 2025-07-25 10:02:27 -06:00
rocket_core.c accel/rocket: fix unwinding in error path in rocket_core_init 2026-01-10 17:49:14 +01:00
rocket_core.h accel/rocket: Add job submission IOCTL 2025-07-25 10:02:27 -06:00
rocket_device.c accel/rocket: Add job submission IOCTL 2025-07-25 10:02:27 -06:00
rocket_device.h accel/rocket: Add job submission IOCTL 2025-07-25 10:02:27 -06:00
rocket_drv.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
rocket_drv.h accel/rocket: Fix undeclared const rocket_pm_ops 2025-08-03 17:40:23 +02:00
rocket_gem.c accel/rocket: fix UAF via dangling GEM handle in create_bo 2026-05-21 19:01:23 +02:00
rocket_gem.h accel/rocket: Add IOCTLs for synchronizing memory accesses 2025-07-25 10:04:46 -06:00
rocket_job.c accel/rocket: Fix error path handling in rocket_job_run() 2026-07-04 10:28:23 +02:00
rocket_job.h accel/rocket: Add job submission IOCTL 2025-07-25 10:02:27 -06:00
rocket_registers.h