]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
accel/ivpu: Reset cmdq->db_id on register failure
authorKarol Wachowski <karol.wachowski@linux.intel.com>
Mon, 15 Sep 2025 10:34:21 +0000 (12:34 +0200)
committerKarol Wachowski <karol.wachowski@linux.intel.com>
Thu, 18 Sep 2025 05:42:11 +0000 (07:42 +0200)
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.

Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
Signed-off-by: Karol Wachowski <karol.wachowski@linux.intel.com>
Link: https://lore.kernel.org/r/20250915103421.830065-1-karol.wachowski@linux.intel.com
drivers/accel/ivpu/ivpu_job.c

index 060f1fc031d347e6d047800f409d1b84453172f1..fa1720fa06a499ce482b61e056ffeaa804da6a77 100644 (file)
@@ -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;
 }