]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
accel/ivpu: Fix memory leak in ivpu_mmu_reserved_context_init()
authorJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Tue, 10 Dec 2024 13:09:38 +0000 (14:09 +0100)
committerJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Thu, 19 Dec 2024 12:16:21 +0000 (13:16 +0100)
Add appropriate error handling to ensure all allocated resources are
released upon encountering an error.

Fixes: a74f4d991352 ("accel/ivpu: Defer MMU root page table allocation")
Cc: Karol Wachowski <karol.wachowski@intel.com>
Reviewed-by: Karol Wachowski <karol.wachowski@intel.com>
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241210130939.1575610-3-jacek.lawrynowicz@linux.intel.com
drivers/accel/ivpu/ivpu_mmu_context.c

index 891967a95bc3c76cb946e3ffd07eb1c767f4c006..0af614dfb6f92546051b3aa9d80fe3845ffef0f5 100644 (file)
@@ -612,18 +612,22 @@ int ivpu_mmu_reserved_context_init(struct ivpu_device *vdev)
        if (!ivpu_mmu_ensure_pgd(vdev, &vdev->rctx.pgtable)) {
                ivpu_err(vdev, "Failed to allocate root page table for reserved context\n");
                ret = -ENOMEM;
-               goto unlock;
+               goto err_ctx_fini;
        }
 
        ret = ivpu_mmu_cd_set(vdev, vdev->rctx.id, &vdev->rctx.pgtable);
        if (ret) {
                ivpu_err(vdev, "Failed to set context descriptor for reserved context\n");
-               goto unlock;
+               goto err_ctx_fini;
        }
 
-unlock:
        mutex_unlock(&vdev->rctx.lock);
        return ret;
+
+err_ctx_fini:
+       mutex_unlock(&vdev->rctx.lock);
+       ivpu_mmu_context_fini(vdev, &vdev->rctx);
+       return ret;
 }
 
 void ivpu_mmu_reserved_context_fini(struct ivpu_device *vdev)