Re: [kbuild] Re: [PATCH v6 17/22] drm/shmem-helper: Add generic memory shrinker

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/30/22 10:09, Dan Carpenter wrote:
> Hi Dmitry,
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Dmitry-Osipenko/Add-generic-memory-shrinker-to-VirtIO-GPU-and-Panfrost-DRM-drivers/20220527-075717 
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git  cdeffe87f790dfd1baa193020411ce9a538446d7
> config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20220527/202205272155.MxDiru43-lkp@xxxxxxxxx/config )
> compiler: gcc-11 (Debian 11.3.0-1) 11.3.0
> 
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> 
> New smatch warnings:
> drivers/gpu/drm/drm_gem_shmem_helper.c:226 drm_gem_shmem_set_evictable() warn: inconsistent returns 'shmem->base.resv'.
> drivers/gpu/drm/drm_gem_shmem_helper.c:253 drm_gem_shmem_set_purgeable() warn: inconsistent returns 'shmem->base.resv'.
> drivers/gpu/drm/drm_gem_shmem_helper.c:703 drm_gem_shmem_fault() error: we previously assumed 'shmem->pages' could be null (see line 694)
> 
> vim +226 drivers/gpu/drm/drm_gem_shmem_helper.c
> 
> 875fd932de880a Dmitry Osipenko 2022-05-27  215  int drm_gem_shmem_set_evictable(struct drm_gem_shmem_object *shmem)
> 875fd932de880a Dmitry Osipenko 2022-05-27  216  {
> 875fd932de880a Dmitry Osipenko 2022-05-27  217  	dma_resv_lock(shmem->base.resv, NULL);
> 875fd932de880a Dmitry Osipenko 2022-05-27  218  
> 875fd932de880a Dmitry Osipenko 2022-05-27  219  	if (shmem->madv < 0)
> 875fd932de880a Dmitry Osipenko 2022-05-27  220  		return -ENOMEM;
> 
> Unlock before returning?
> 
> 875fd932de880a Dmitry Osipenko 2022-05-27  221  
> 875fd932de880a Dmitry Osipenko 2022-05-27  222  	shmem->eviction_enabled = true;
> 875fd932de880a Dmitry Osipenko 2022-05-27  223  
> 875fd932de880a Dmitry Osipenko 2022-05-27  224  	dma_resv_unlock(shmem->base.resv);
> 875fd932de880a Dmitry Osipenko 2022-05-27  225  
> 875fd932de880a Dmitry Osipenko 2022-05-27 @226  	return 0;
> 875fd932de880a Dmitry Osipenko 2022-05-27  227  }
> 875fd932de880a Dmitry Osipenko 2022-05-27  228  EXPORT_SYMBOL_GPL(drm_gem_shmem_set_evictable);
> 875fd932de880a Dmitry Osipenko 2022-05-27  229  
> 875fd932de880a Dmitry Osipenko 2022-05-27  230  /**
> 875fd932de880a Dmitry Osipenko 2022-05-27  231   * drm_gem_shmem_set_purgeable() - Make GEM purgeable by memory shrinker
> 875fd932de880a Dmitry Osipenko 2022-05-27  232   * @shmem: shmem GEM object
> 875fd932de880a Dmitry Osipenko 2022-05-27  233   *
> 875fd932de880a Dmitry Osipenko 2022-05-27  234   * Tell memory shrinker that this GEM can be purged. Initially purging is
> 875fd932de880a Dmitry Osipenko 2022-05-27  235   * disabled for all GEMs. If GEM was purged, then -ENOMEM is returned.
> 875fd932de880a Dmitry Osipenko 2022-05-27  236   *
> 875fd932de880a Dmitry Osipenko 2022-05-27  237   * Returns:
> 875fd932de880a Dmitry Osipenko 2022-05-27  238   * 0 on success or a negative error code on failure.
> 875fd932de880a Dmitry Osipenko 2022-05-27  239   */
> 875fd932de880a Dmitry Osipenko 2022-05-27  240  int drm_gem_shmem_set_purgeable(struct drm_gem_shmem_object *shmem)
> 875fd932de880a Dmitry Osipenko 2022-05-27  241  {
> 875fd932de880a Dmitry Osipenko 2022-05-27  242  	dma_resv_lock(shmem->base.resv, NULL);
> 875fd932de880a Dmitry Osipenko 2022-05-27  243  
> 875fd932de880a Dmitry Osipenko 2022-05-27  244  	if (shmem->madv < 0)
> 875fd932de880a Dmitry Osipenko 2022-05-27  245  		return -ENOMEM;
> 
> Same.

Indeed, thanks!

-- 
Best regards,
Dmitry



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux