diff mbox series

drm/i915: Do not dereference NULL bo->resource

Message ID 20220919150233.5457-1-nirmoy.das@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: Do not dereference NULL bo->resource | expand

Commit Message

Nirmoy Das Sept. 19, 2022, 3:02 p.m. UTC
bo->resource could be NULL hence add a NULL check for
bo->resource before dereferencing it.

References: https://gitlab.freedesktop.org/drm/intel/-/issues/6850
Fixes: ad74457a6b5a96 ("drm/i915/dgfx: Release mmap on rpm suspend")
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Gupta, Anshuman Sept. 19, 2022, 3:29 p.m. UTC | #1
> -----Original Message-----
> From: Das, Nirmoy <nirmoy.das@intel.com>
> Sent: Monday, September 19, 2022 8:33 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: dri-devel@lists.freedesktop.org; Auld, Matthew
> <matthew.auld@intel.com>; Gupta, Anshuman <anshuman.gupta@intel.com>
> Subject: [PATCH] drm/i915: Do not dereference NULL bo->resource
> 
> bo->resource could be NULL hence add a NULL check for resource before
> bo->dereferencing it.
Will bo->resource will be NULL only in case of object is smem or it can be NULL even in lmem case as well ?
Thanks,
Anshuman Gupta. 
> 
> References: https://gitlab.freedesktop.org/drm/intel/-/issues/6850
> Fixes: ad74457a6b5a96 ("drm/i915/dgfx: Release mmap on rpm suspend")
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
> ---
>  drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> index 0544b0a4a43a..8608801cd9ab 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> @@ -513,7 +513,7 @@ static void i915_ttm_delete_mem_notify(struct
> ttm_buffer_object *bo)
> 
>  	if (likely(obj)) {
>  		/* ttm_bo_release() already has dma_resv_lock */
> -		if (i915_ttm_cpu_maps_iomem(bo->resource))
> +		if (bo->resource && i915_ttm_cpu_maps_iomem(bo-
> >resource))
>  			wakeref = intel_runtime_pm_get(&to_i915(obj-
> >base.dev)->runtime_pm);
> 
>  		__i915_gem_object_pages_fini(obj);
> --
> 2.37.3
Nirmoy Das Sept. 20, 2022, 8:13 a.m. UTC | #2
On 9/19/2022 5:29 PM, Gupta, Anshuman wrote:
>
>> -----Original Message-----
>> From: Das, Nirmoy <nirmoy.das@intel.com>
>> Sent: Monday, September 19, 2022 8:33 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: dri-devel@lists.freedesktop.org; Auld, Matthew
>> <matthew.auld@intel.com>; Gupta, Anshuman <anshuman.gupta@intel.com>
>> Subject: [PATCH] drm/i915: Do not dereference NULL bo->resource
>>
>> bo->resource could be NULL hence add a NULL check for resource before
>> bo->dereferencing it.
> Will bo->resource will be NULL only in case of object is smem or it can be NULL even in lmem case as well ?


It can happen with lmem too. I think we should just use 
i915_gem_object_is_lmem() instead of i915_ttm_cpu_maps_iomem here.


Nirmoy

> Thanks,
> Anshuman Gupta.
>> References: https://gitlab.freedesktop.org/drm/intel/-/issues/6850
>> Fixes: ad74457a6b5a96 ("drm/i915/dgfx: Release mmap on rpm suspend")
>> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
>> ---
>>   drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
>> b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
>> index 0544b0a4a43a..8608801cd9ab 100644
>> --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
>> @@ -513,7 +513,7 @@ static void i915_ttm_delete_mem_notify(struct
>> ttm_buffer_object *bo)
>>
>>   	if (likely(obj)) {
>>   		/* ttm_bo_release() already has dma_resv_lock */
>> -		if (i915_ttm_cpu_maps_iomem(bo->resource))
>> +		if (bo->resource && i915_ttm_cpu_maps_iomem(bo-
>>> resource))
>>   			wakeref = intel_runtime_pm_get(&to_i915(obj-
>>> base.dev)->runtime_pm);
>>   		__i915_gem_object_pages_fini(obj);
>> --
>> 2.37.3
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
index 0544b0a4a43a..8608801cd9ab 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
@@ -513,7 +513,7 @@  static void i915_ttm_delete_mem_notify(struct ttm_buffer_object *bo)
 
 	if (likely(obj)) {
 		/* ttm_bo_release() already has dma_resv_lock */
-		if (i915_ttm_cpu_maps_iomem(bo->resource))
+		if (bo->resource && i915_ttm_cpu_maps_iomem(bo->resource))
 			wakeref = intel_runtime_pm_get(&to_i915(obj->base.dev)->runtime_pm);
 
 		__i915_gem_object_pages_fini(obj);