[Intel-gfx] [PATCH 3/4] drm/i915/guc: Clear pointers on free

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Fri Oct 9 21:43:42 UTC 2020



On 9/25/2020 4:26 PM, John.C.Harrison at Intel.com wrote:
> From: John Harrison <John.C.Harrison at Intel.com>
>
> Was hitting null pointers and similar issues when running various
> module load/unload and inject failure type tests. So clear those
> pointers down when the objects have been de-allocated.

Had a quick chat with John about the incorrect pointer access, since the 
cleanup wouldn't fix the fact we're accessing a pointer after the 
relevant object was deallocated. None of the errors he hit are actually 
in the tree at the moment, the cleanup is just to make the errors 
slightly clearer in case we accidentally introduce new ones.
With a reworded commit message to better explain the above:

Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>

Daniele

> Signed-off-by: John Harrison <John.C.Harrison at Intel.com>
> ---
>   drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 1 +
>   drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c  | 1 +
>   2 files changed, 2 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
> index 7950d28beb8c..5212ff844292 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c
> @@ -220,6 +220,7 @@ int intel_guc_ads_create(struct intel_guc *guc)
>   void intel_guc_ads_destroy(struct intel_guc *guc)
>   {
>   	i915_vma_unpin_and_release(&guc->ads_vma, I915_VMA_RELEASE_MAP);
> +	guc->ads_blob = NULL;
>   }
>   
>   static void guc_ads_private_data_reset(struct intel_guc *guc)
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
> index 11742fca0e9e..fa9e048cc65f 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c
> @@ -210,6 +210,7 @@ void intel_guc_ct_fini(struct intel_guc_ct *ct)
>   	GEM_BUG_ON(ct->enabled);
>   
>   	i915_vma_unpin_and_release(&ct->vma, I915_VMA_RELEASE_MAP);
> +	memset(ct, 0, sizeof(*ct));
>   }
>   
>   /**



More information about the Intel-gfx mailing list