On ke, 2016-04-27 at 15:30 +0300, Mika Kuoppala wrote: > 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> > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > > > > --- > > 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) -- Joonas Lahtinen Open Source Technology Center Intel Corporation _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx