Commit 635f56c3 authored by Imre Deak's avatar Imre Deak

drm/i915: Fix error checking/locking in perf/lookup_context()

1acfc104 missed to convert this one caller to be lockless. The side
effect of that was that the error check in lookup_context() became
incorrect. Convert now this caller too.

Fixes: 1acfc104 ("drm/i915: Enable rcu-only context lookups")
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170714151242.517-1-imre.deak@intel.com
parent 58947144
...@@ -2483,27 +2483,6 @@ static const struct file_operations fops = { ...@@ -2483,27 +2483,6 @@ static const struct file_operations fops = {
}; };
static struct i915_gem_context *
lookup_context(struct drm_i915_private *dev_priv,
struct drm_i915_file_private *file_priv,
u32 ctx_user_handle)
{
struct i915_gem_context *ctx;
int ret;
ret = i915_mutex_lock_interruptible(&dev_priv->drm);
if (ret)
return ERR_PTR(ret);
ctx = i915_gem_context_lookup(file_priv, ctx_user_handle);
if (!IS_ERR(ctx))
i915_gem_context_get(ctx);
mutex_unlock(&dev_priv->drm.struct_mutex);
return ctx;
}
/** /**
* i915_perf_open_ioctl_locked - DRM ioctl() for userspace to open a stream FD * i915_perf_open_ioctl_locked - DRM ioctl() for userspace to open a stream FD
* @dev_priv: i915 device instance * @dev_priv: i915 device instance
...@@ -2545,12 +2524,11 @@ i915_perf_open_ioctl_locked(struct drm_i915_private *dev_priv, ...@@ -2545,12 +2524,11 @@ i915_perf_open_ioctl_locked(struct drm_i915_private *dev_priv,
u32 ctx_handle = props->ctx_handle; u32 ctx_handle = props->ctx_handle;
struct drm_i915_file_private *file_priv = file->driver_priv; struct drm_i915_file_private *file_priv = file->driver_priv;
specific_ctx = lookup_context(dev_priv, file_priv, ctx_handle); specific_ctx = i915_gem_context_lookup(file_priv, ctx_handle);
if (IS_ERR(specific_ctx)) { if (!specific_ctx) {
ret = PTR_ERR(specific_ctx);
if (ret != -EINTR)
DRM_DEBUG("Failed to look up context with ID %u for opening perf stream\n", DRM_DEBUG("Failed to look up context with ID %u for opening perf stream\n",
ctx_handle); ctx_handle);
ret = -ENOENT;
goto err; goto 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