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: Jike Song <jike.song@intel.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
This commit is contained in:
parent
59c0573dfb
commit
4e5378918b
|
@ -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 @@ out_clean_vgpu_resource:
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue