提交 73c273eb 编写于 作者: D Daniel Vetter

drm/i915: simplify context_idr_cleanup

The idr code already passes us the pointer associated with that id, so
no need to look it up again. Also, we'll kill the idr right away, so
there's no issue with leaving these dangling pointers behind - the
current code does the same.

v2: Also drop the file argument, spotted by Ben Widawsky.
Reviewed-by: NBen Widawsky <ben@bwidawsk.net>
Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 6f4c45c1
...@@ -289,14 +289,9 @@ void i915_gem_context_fini(struct drm_device *dev) ...@@ -289,14 +289,9 @@ void i915_gem_context_fini(struct drm_device *dev)
static int context_idr_cleanup(int id, void *p, void *data) static int context_idr_cleanup(int id, void *p, void *data)
{ {
struct drm_file *file = (struct drm_file *)data; struct i915_hw_context *ctx = p;
struct drm_i915_file_private *file_priv = file->driver_priv;
struct i915_hw_context *ctx;
BUG_ON(id == DEFAULT_CONTEXT_ID); BUG_ON(id == DEFAULT_CONTEXT_ID);
ctx = i915_gem_context_get(file_priv, id);
if (WARN_ON(ctx == NULL))
return -ENXIO;
do_destroy(ctx); do_destroy(ctx);
...@@ -308,7 +303,7 @@ void i915_gem_context_close(struct drm_device *dev, struct drm_file *file) ...@@ -308,7 +303,7 @@ void i915_gem_context_close(struct drm_device *dev, struct drm_file *file)
struct drm_i915_file_private *file_priv = file->driver_priv; struct drm_i915_file_private *file_priv = file->driver_priv;
mutex_lock(&dev->struct_mutex); mutex_lock(&dev->struct_mutex);
idr_for_each(&file_priv->context_idr, context_idr_cleanup, file); idr_for_each(&file_priv->context_idr, context_idr_cleanup, NULL);
idr_destroy(&file_priv->context_idr); idr_destroy(&file_priv->context_idr);
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册