提交 4717ca9e 编写于 作者: C 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: NChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470293567-10811-9-git-send-email-chris@chris-wilson.co.uk
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册