Commit 6c9ba75f authored by Jacek Lawrynowicz's avatar Jacek Lawrynowicz
Browse files

accel/ivpu: Fix memory leak in ivpu_mmu_reserved_context_init()



Add appropriate error handling to ensure all allocated resources are
released upon encountering an error.

Fixes: a74f4d99 ("accel/ivpu: Defer MMU root page table allocation")
Cc: Karol Wachowski <karol.wachowski@intel.com>
Reviewed-by: default avatarKarol Wachowski <karol.wachowski@intel.com>
Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: default avatarJacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241210130939.1575610-3-jacek.lawrynowicz@linux.intel.com
parent 4b2efb9d
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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)