[PATCH v2 3/3] drm/amdgpu: use drm_file name

kernel test robot lkp at intel.com
Thu Sep 19 21:36:19 UTC 2024


Hi Pierre-Eric,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-exynos/exynos-drm-next]
[also build test WARNING on drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-misc/drm-misc-next drm-tip/drm-tip linus/master v6.11 next-20240919]
[cannot apply to drm/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Pierre-Eric-Pelloux-Prayer/drm-use-drm_file-name-in-fdinfo/20240916-213521
base:   https://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git exynos-drm-next
patch link:    https://lore.kernel.org/r/20240916133223.1023773-3-pierre-eric.pelloux-prayer%40amd.com
patch subject: [PATCH v2 3/3] drm/amdgpu: use drm_file name
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20240920/202409200113.0AEe5YG9-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240920/202409200113.0AEe5YG9-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409200113.0AEe5YG9-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c:997:32: warning: variable 'file' is uninitialized when used here [-Wuninitialized]
     997 |         r = mutex_lock_interruptible(&file->name_lock);
         |                                       ^~~~
   include/linux/mutex.h:162:72: note: expanded from macro 'mutex_lock_interruptible'
     162 | #define mutex_lock_interruptible(lock) mutex_lock_interruptible_nested(lock, 0)
         |                                                                        ^~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c:990:23: note: initialize the variable 'file' to silence this warning
     990 |         struct drm_file *file;
         |                              ^
         |                               = NULL
   1 warning generated.


vim +/file +997 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c

   984	
   985	#if defined(CONFIG_DEBUG_FS)
   986	static int amdgpu_debugfs_gem_info_show(struct seq_file *m, void *unused)
   987	{
   988		struct amdgpu_device *adev = m->private;
   989		struct drm_device *dev = adev_to_drm(adev);
   990		struct drm_file *file;
   991		int r;
   992	
   993		r = mutex_lock_interruptible(&dev->filelist_mutex);
   994		if (r)
   995			return r;
   996	
 > 997		r = mutex_lock_interruptible(&file->name_lock);
   998		if (r)
   999			goto out;
  1000	
  1001		list_for_each_entry(file, &dev->filelist, lhead) {
  1002			struct task_struct *task;
  1003			struct drm_gem_object *gobj;
  1004			struct pid *pid;
  1005			int id;
  1006	
  1007			/*
  1008			 * Although we have a valid reference on file->pid, that does
  1009			 * not guarantee that the task_struct who called get_pid() is
  1010			 * still alive (e.g. get_pid(current) => fork() => exit()).
  1011			 * Therefore, we need to protect this ->comm access using RCU.
  1012			 */
  1013			rcu_read_lock();
  1014			pid = rcu_dereference(file->pid);
  1015			task = pid_task(pid, PIDTYPE_TGID);
  1016			seq_printf(m, "pid %8d command %s", pid_nr(pid),
  1017					   task ? task->comm : "<unknown>");
  1018			if (file->name) {
  1019				seq_putc(m, '/');
  1020				seq_puts(m, file->name);
  1021			}
  1022			seq_puts(m, ":\n");
  1023			rcu_read_unlock();
  1024	
  1025			spin_lock(&file->table_lock);
  1026			idr_for_each_entry(&file->object_idr, gobj, id) {
  1027				struct amdgpu_bo *bo = gem_to_amdgpu_bo(gobj);
  1028	
  1029				amdgpu_bo_print_info(id, bo, m);
  1030			}
  1031			spin_unlock(&file->table_lock);
  1032		}
  1033		mutex_unlock(&file->name_lock);
  1034	out:
  1035		mutex_unlock(&dev->filelist_mutex);
  1036		return 0;
  1037	}
  1038	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


More information about the dri-devel mailing list