Ensure that cmdq->db_id is reset to 0 if ivpu_jsm_register_db fails,
preventing potential reuse of invalid command queue with
unregistered doorbell.

Signed-off-by: Karol Wachowski <karol.wachow...@linux.intel.com>
---
 drivers/accel/ivpu/ivpu_job.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/accel/ivpu/ivpu_job.c b/drivers/accel/ivpu/ivpu_job.c
index 060f1fc031d3..fa1720fa06a4 100644
--- a/drivers/accel/ivpu/ivpu_job.c
+++ b/drivers/accel/ivpu/ivpu_job.c
@@ -219,11 +219,13 @@ static int ivpu_register_db(struct ivpu_file_priv 
*file_priv, struct ivpu_cmdq *
                ret = ivpu_jsm_register_db(vdev, file_priv->ctx.id, cmdq->db_id,
                                           cmdq->mem->vpu_addr, 
ivpu_bo_size(cmdq->mem));
 
-       if (!ret)
+       if (!ret) {
                ivpu_dbg(vdev, JOB, "DB %d registered to cmdq %d ctx %d 
priority %d\n",
                         cmdq->db_id, cmdq->id, file_priv->ctx.id, 
cmdq->priority);
-       else
+       } else {
                xa_erase(&vdev->db_xa, cmdq->db_id);
+               cmdq->db_id = 0;
+       }
 
        return ret;
 }
-- 
2.43.0

Reply via email to