Commit ac70ebe8 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Cleanup error paths through eb_lookup_vma()

Following the simplification to a single lookup loop in commit
170fa29b ("drm/i915: Simplify eb_lookup_vmas()") and commit
d1b48c1e ("drm/i915: Replace execbuf vma ht with an idr"), we can go
one step further and reorder the error paths so that the state of the
local variable obj is always known to the compiler and doesn't need the
uninitialized_var markup to squelch a compiler warning.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170912150752.20411-1-chris@chris-wilson.co.ukReviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
parent 4ebc6509
...@@ -679,7 +679,7 @@ static int eb_select_context(struct i915_execbuffer *eb) ...@@ -679,7 +679,7 @@ static int eb_select_context(struct i915_execbuffer *eb)
static int eb_lookup_vmas(struct i915_execbuffer *eb) static int eb_lookup_vmas(struct i915_execbuffer *eb)
{ {
struct radix_tree_root *handles_vma = &eb->ctx->handles_vma; struct radix_tree_root *handles_vma = &eb->ctx->handles_vma;
struct drm_i915_gem_object *uninitialized_var(obj); struct drm_i915_gem_object *obj;
unsigned int i; unsigned int i;
int err; int err;
...@@ -725,19 +725,17 @@ static int eb_lookup_vmas(struct i915_execbuffer *eb) ...@@ -725,19 +725,17 @@ static int eb_lookup_vmas(struct i915_execbuffer *eb)
goto err_obj; goto err_obj;
} }
/* transfer ref to ctx */
vma->open_count++; vma->open_count++;
list_add(&lut->obj_link, &obj->lut_list); list_add(&lut->obj_link, &obj->lut_list);
list_add(&lut->ctx_link, &eb->ctx->handles_list); list_add(&lut->ctx_link, &eb->ctx->handles_list);
lut->ctx = eb->ctx; lut->ctx = eb->ctx;
lut->handle = handle; lut->handle = handle;
/* transfer ref to ctx */
obj = NULL;
add_vma: add_vma:
err = eb_add_vma(eb, i, vma); err = eb_add_vma(eb, i, vma);
if (unlikely(err)) if (unlikely(err))
goto err_obj; goto err_vma;
GEM_BUG_ON(vma != eb->vma[i]); GEM_BUG_ON(vma != eb->vma[i]);
GEM_BUG_ON(vma->exec_flags != &eb->flags[i]); GEM_BUG_ON(vma->exec_flags != &eb->flags[i]);
...@@ -766,8 +764,7 @@ static int eb_lookup_vmas(struct i915_execbuffer *eb) ...@@ -766,8 +764,7 @@ static int eb_lookup_vmas(struct i915_execbuffer *eb)
return eb_reserve(eb); return eb_reserve(eb);
err_obj: err_obj:
if (obj) i915_gem_object_put(obj);
i915_gem_object_put(obj);
err_vma: err_vma:
eb->vma[i] = NULL; eb->vma[i] = NULL;
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment