Reviewed-by: Lizhi Hou <[email protected]>

On 9/16/25 01:48, Karol Wachowski wrote:
Previously, aborting work could return early after engine reset or resume
failure, skipping the necessary runtime_put cleanup leaving the device
with incorrect reference count breaking runtime power management state.

Replace early returns with goto statements to ensure runtime_put is always
executed.

Fixes: a47e36dc5d90 ("accel/ivpu: Trigger device recovery on engine reset/resume 
failure")
Signed-off-by: Karol Wachowski <[email protected]>
---
v0 -> v1:
Added 'Fixes:' tag.
---
  drivers/accel/ivpu/ivpu_job.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c
index 521b7ac6e35e..044268d0fc87 100644
--- a/drivers/accel/ivpu/ivpu_job.c
+++ b/drivers/accel/ivpu/ivpu_job.c
@@ -1050,7 +1050,7 @@ void ivpu_context_abort_work_fn(struct work_struct *work)
if (vdev->fw->sched_mode == VPU_SCHEDULING_MODE_HW)
                if (ivpu_jsm_reset_engine(vdev, 0))
-                       return;
+                       goto runtime_put;
mutex_lock(&vdev->context_list_lock);
        xa_for_each(&vdev->context_xa, ctx_id, file_priv) {
@@ -1074,7 +1074,7 @@ void ivpu_context_abort_work_fn(struct work_struct *work)
                goto runtime_put;
if (ivpu_jsm_hws_resume_engine(vdev, 0))
-               return;
+               goto runtime_put;
        /*
         * In hardware scheduling mode NPU already has stopped processing jobs
         * and won't send us any further notifications, thus we have to free 
job related resources

Reply via email to