[Intel-gfx] [PATCH 03/31] drm/i915: Only clear the client pointer when tearing down the file
Joonas Lahtinen
joonas.lahtinen at linux.intel.com
Mon Jul 25 08:15:38 UTC 2016
On ma, 2016-07-25 at 08:44 +0100, Chris Wilson wrote:
> Upon release of the file (i.e. the user calls close(fd)), we decouple
> all objects from the client list so that we don't chase the dangling
> file_priv. As we always inspect file_priv first, we only need to nullify
> that pointer and can safely ignore the list_head.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_gem.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index c8436639b3ed..3730aecc1eae 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4745,21 +4745,15 @@ int i915_gem_freeze_late(struct drm_i915_private *dev_priv)
> void i915_gem_release(struct drm_device *dev, struct drm_file *file)
> {
> struct drm_i915_file_private *file_priv = file->driver_priv;
> + struct drm_i915_gem_request *request;
>
> /* Clean up our request list when the client is going away, so that
> * later retire_requests won't dereference our soon-to-be-gone
> * file_priv.
> */
> spin_lock(&file_priv->mm.lock);
> - while (!list_empty(&file_priv->mm.request_list)) {
> - struct drm_i915_gem_request *request;
> -
> - request = list_first_entry(&file_priv->mm.request_list,
> - struct drm_i915_gem_request,
> - client_list);
> - list_del(&request->client_list);
> + list_for_each_entry(request, &file_priv->mm.request_list, client_list)
> request->file_priv = NULL;
> - }
> spin_unlock(&file_priv->mm.lock);
>
> if (!list_empty(&file_priv->rps.link)) {
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
More information about the Intel-gfx
mailing list