Matthew Auld <matthew.auld@xxxxxxxxx> writes: > [ text/plain ] > Prefer a goto teardown path to do all the required cleanup. > > v2: > (Joonas Lahtinen) > - remove NULL assignments > - rename goto labels > > Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > Cc: Dave Gordon <david.s.gordon@xxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Signed-off-by: Matthew Auld <matthew.auld@xxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 25 ++++++++++++++++--------- > 1 file changed, 16 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 0d666b3..87947ec 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -866,6 +866,7 @@ static void gen8_free_page_tables(struct drm_device *dev, > static int gen8_init_scratch(struct i915_address_space *vm) > { > struct drm_device *dev = vm->dev; > + int ret; > > vm->scratch_page = alloc_scratch_page(dev); > if (IS_ERR(vm->scratch_page)) > @@ -873,24 +874,21 @@ static int gen8_init_scratch(struct i915_address_space *vm) > > vm->scratch_pt = alloc_pt(dev); > if (IS_ERR(vm->scratch_pt)) { > - free_scratch_page(dev, vm->scratch_page); > - return PTR_ERR(vm->scratch_pt); > + ret = PTR_ERR(vm->scratch_pt); > + goto free_scratch_page; > } > > vm->scratch_pd = alloc_pd(dev); > if (IS_ERR(vm->scratch_pd)) { > - free_pt(dev, vm->scratch_pt); > - free_scratch_page(dev, vm->scratch_page); > - return PTR_ERR(vm->scratch_pd); > + ret = PTR_ERR(vm->scratch_pd); > + goto free_pt; > } > > if (USES_FULL_48BIT_PPGTT(dev)) { > vm->scratch_pdp = alloc_pdp(dev); > if (IS_ERR(vm->scratch_pdp)) { > - free_pd(dev, vm->scratch_pd); > - free_pt(dev, vm->scratch_pt); > - free_scratch_page(dev, vm->scratch_page); > - return PTR_ERR(vm->scratch_pdp); > + ret = PTR_ERR(vm->scratch_pdp); > + goto free_pd; > } > } > > @@ -900,6 +898,15 @@ static int gen8_init_scratch(struct i915_address_space *vm) > gen8_initialize_pdp(vm, vm->scratch_pdp); > > return 0; > + > +free_pd: > + free_pd(dev, vm->scratch_pd); > +free_pt: > + free_pt(dev, vm->scratch_pt); > +free_scratch_page: > + free_scratch_page(dev, vm->scratch_page); > + > + return ret; > } > > static int gen8_ppgtt_notify_vgt(struct i915_hw_ppgtt *ppgtt, bool create) > -- > 2.4.11 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx