mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 10:41:49 +02:00
drm/i915/gem: Rework error handling in default_engines
Since free_engines works for partially constructed engine sets, we can use the usual goto pattern. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210708154835.528166-18-jason@jlekstrand.net
This commit is contained in:
parent
a34857dc92
commit
07a635a825
|
|
@ -366,7 +366,7 @@ static struct i915_gem_engines *default_engines(struct i915_gem_context *ctx)
|
|||
{
|
||||
const struct intel_gt *gt = &ctx->i915->gt;
|
||||
struct intel_engine_cs *engine;
|
||||
struct i915_gem_engines *e;
|
||||
struct i915_gem_engines *e, *err;
|
||||
enum intel_engine_id id;
|
||||
|
||||
e = alloc_engines(I915_NUM_ENGINES);
|
||||
|
|
@ -384,18 +384,21 @@ static struct i915_gem_engines *default_engines(struct i915_gem_context *ctx)
|
|||
|
||||
ce = intel_context_create(engine);
|
||||
if (IS_ERR(ce)) {
|
||||
__free_engines(e, e->num_engines + 1);
|
||||
return ERR_CAST(ce);
|
||||
err = ERR_CAST(ce);
|
||||
goto free_engines;
|
||||
}
|
||||
|
||||
intel_context_set_gem(ce, ctx);
|
||||
|
||||
e->engines[engine->legacy_idx] = ce;
|
||||
e->num_engines = max(e->num_engines, engine->legacy_idx);
|
||||
e->num_engines = max(e->num_engines, engine->legacy_idx + 1);
|
||||
}
|
||||
e->num_engines++;
|
||||
|
||||
return e;
|
||||
|
||||
free_engines:
|
||||
free_engines(e);
|
||||
return err;
|
||||
}
|
||||
|
||||
void i915_gem_context_release(struct kref *ref)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user