drm/i915: Fix error checking/locking in perf/lookup_context()
1acfc104cd
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:1acfc104cd
("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: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170714151242.517-1-imre.deak@intel.com
This commit is contained in:
parent
58947144af
commit
635f56c342
|
@ -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,
|
||||||
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);
|
DRM_DEBUG("Failed to look up context with ID %u for opening perf stream\n",
|
||||||
if (ret != -EINTR)
|
ctx_handle);
|
||||||
DRM_DEBUG("Failed to look up context with ID %u for opening perf stream\n",
|
ret = -ENOENT;
|
||||||
ctx_handle);
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue