Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e537891 authored by Jike Song's avatar Jike Song Committed by Zhenyu Wang
Browse files

drm/i915/gvt: destroy the allocated idr on vgpu creating failures



Once idr_alloc gets called data is allocated within the idr list, if
any error occurs afterwards, we should undo that by idr_remove on the
error path.

Signed-off-by: default avatarJike Song <jike.song@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent 59c0573d
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -304,7 +304,7 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,


	ret = setup_vgpu_mmio(vgpu);
	ret = setup_vgpu_mmio(vgpu);
	if (ret)
	if (ret)
		goto out_free_vgpu;
		goto out_clean_idr;


	ret = intel_vgpu_alloc_resource(vgpu, param);
	ret = intel_vgpu_alloc_resource(vgpu, param);
	if (ret)
	if (ret)
@@ -355,6 +355,8 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,
	intel_vgpu_free_resource(vgpu);
	intel_vgpu_free_resource(vgpu);
out_clean_vgpu_mmio:
out_clean_vgpu_mmio:
	clean_vgpu_mmio(vgpu);
	clean_vgpu_mmio(vgpu);
out_clean_idr:
	idr_remove(&gvt->vgpu_idr, vgpu->id);
out_free_vgpu:
out_free_vgpu:
	vfree(vgpu);
	vfree(vgpu);
	mutex_unlock(&gvt->lock);
	mutex_unlock(&gvt->lock);