Commit 4717ca9e authored by Chris Wilson's avatar Chris Wilson

drm/i915: Kill drop_pages()

The drop_pages() function is a dangerous trap in that it can release the
passed in object pointer and so unless the caller is aware, it can
easily trick us into using the stale object afterwards. Move it into its
solitary callsite where we know it is safe.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470293567-10811-9-git-send-email-chris@chris-wilson.co.uk
parent aa653a68
...@@ -306,20 +306,6 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj) ...@@ -306,20 +306,6 @@ i915_gem_object_unbind(struct drm_i915_gem_object *obj)
return ret; return ret;
} }
static int
drop_pages(struct drm_i915_gem_object *obj)
{
int ret;
i915_gem_object_get(obj);
ret = i915_gem_object_unbind(obj);
if (ret == 0)
ret = i915_gem_object_put_pages(obj);
i915_gem_object_put(obj);
return ret;
}
int int
i915_gem_object_attach_phys(struct drm_i915_gem_object *obj, i915_gem_object_attach_phys(struct drm_i915_gem_object *obj,
int align) int align)
...@@ -340,7 +326,11 @@ i915_gem_object_attach_phys(struct drm_i915_gem_object *obj, ...@@ -340,7 +326,11 @@ i915_gem_object_attach_phys(struct drm_i915_gem_object *obj,
if (obj->base.filp == NULL) if (obj->base.filp == NULL)
return -EINVAL; return -EINVAL;
ret = drop_pages(obj); ret = i915_gem_object_unbind(obj);
if (ret)
return ret;
ret = i915_gem_object_put_pages(obj);
if (ret) if (ret)
return ret; return ret;
......
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