[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