[Intel-gfx] [PATCH] drm/i915: Clear execbuf's vma backpointer upon release

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Thu Jun 22 11:36:37 UTC 2017


On 22/06/2017 11:47, Chris Wilson wrote:
> commit 2889caa92321 ("drm/i915: Eliminate lots of iterations over the
> execobjects array") jiggled around the error handling and replace a test
> that we cleaned up properly after ourselves with an assertion. That
> assertion failed because in the release function (moments after the
> assertion) we were indeed forgetting to mark the vma as cleared. The
> consequence was when testing an invalid relocation address, we would try
> to release the vma twice (following the couple of attempts to verify the
> address) and on the second release notice that the first release was
> incomplete.
> 
> Testcase: igt/gem_reloc_overflow/invalid-address
> Fixes: 2889caa92321 ("drm/i915: Eliminate lots of iterations over the execobjects array")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>   drivers/gpu/drm/i915/i915_gem_execbuffer.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index b2457556591c..ec33b358fba9 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -879,6 +879,7 @@ static void eb_release_vmas(const struct i915_execbuffer *eb)
>   
>   		GEM_BUG_ON(vma->exec_entry != entry);
>   		vma->exec_entry = NULL;
> +		__exec_to_vma(entry) = 0;
>   
>   		if (entry->flags & __EXEC_OBJECT_HAS_PIN)
>   			__eb_unreserve_vma(vma, entry);
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Regards,

Tvrtko


More information about the Intel-gfx mailing list