[PATCH v2 2/4] drm/prime: Helper to export dmabuf without fd

kernel test robot lkp at intel.com
Wed Nov 22 14:48:46 UTC 2023


Hi Felix,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on drm/drm-next drm-exynos/exynos-drm-next drm-intel/for-linux-next drm-intel/for-linux-next-fixes drm-tip/drm-tip linus/master v6.7-rc2 next-20231122]
[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/Felix-Kuehling/drm-prime-Helper-to-export-dmabuf-without-fd/20231122-071410
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20231121231114.703478-2-Felix.Kuehling%40amd.com
patch subject: [PATCH v2 2/4] drm/prime: Helper to export dmabuf without fd
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20231122/202311221810.IJ6ELH6c-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231122/202311221810.IJ6ELH6c-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/202311221810.IJ6ELH6c-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/drm_prime.c:428: warning: Excess function parameter 'dma_buf' description in 'drm_gem_prime_handle_to_dmabuf'


vim +428 drivers/gpu/drm/drm_prime.c

319c933c71f3db Daniel Vetter     2013-08-15  411  
d3977ac8e10a0b Felix Kuehling    2023-11-21  412  /**
f3facd92ee25e0 Felix Kuehling    2023-11-21  413   * drm_gem_prime_handle_to_dmabuf - PRIME export function for GEM drivers
39cc344acd414e Daniel Vetter     2014-01-22  414   * @dev: dev to export the buffer from
39cc344acd414e Daniel Vetter     2014-01-22  415   * @file_priv: drm file-private structure
39cc344acd414e Daniel Vetter     2014-01-22  416   * @handle: buffer handle to export
39cc344acd414e Daniel Vetter     2014-01-22  417   * @flags: flags like DRM_CLOEXEC
f3facd92ee25e0 Felix Kuehling    2023-11-21  418   * @dma_buf: pointer to storage for the dma-buf reference
39cc344acd414e Daniel Vetter     2014-01-22  419   *
39cc344acd414e Daniel Vetter     2014-01-22  420   * This is the PRIME export function which must be used mandatorily by GEM
39cc344acd414e Daniel Vetter     2014-01-22  421   * drivers to ensure correct lifetime management of the underlying GEM object.
39cc344acd414e Daniel Vetter     2014-01-22  422   * The actual exporting from GEM object to a dma-buf is done through the
d693def4fd1c23 Thomas Zimmermann 2020-09-23  423   * &drm_gem_object_funcs.export callback.
39cc344acd414e Daniel Vetter     2014-01-22  424   */
f3facd92ee25e0 Felix Kuehling    2023-11-21  425  struct dma_buf *drm_gem_prime_handle_to_dmabuf(struct drm_device *dev,
f3facd92ee25e0 Felix Kuehling    2023-11-21  426  					       struct drm_file *file_priv,
f3facd92ee25e0 Felix Kuehling    2023-11-21  427  					       uint32_t handle, uint32_t flags)
3248877ea17969 Dave Airlie       2011-11-25 @428  {
3248877ea17969 Dave Airlie       2011-11-25  429  	struct drm_gem_object *obj;
219b47339ced80 Dave Airlie       2013-04-22  430  	int ret = 0;
f3facd92ee25e0 Felix Kuehling    2023-11-21  431  	struct dma_buf *dmabuf = NULL;
3248877ea17969 Dave Airlie       2011-11-25  432  
d0b2c5334f41bd Daniel Vetter     2013-08-15  433  	mutex_lock(&file_priv->prime.lock);
a8ad0bd84f9860 Chris Wilson      2016-05-09  434  	obj = drm_gem_object_lookup(file_priv, handle);
d0b2c5334f41bd Daniel Vetter     2013-08-15  435  	if (!obj)  {
d0b2c5334f41bd Daniel Vetter     2013-08-15  436  		ret = -ENOENT;
d0b2c5334f41bd Daniel Vetter     2013-08-15  437  		goto out_unlock;
d0b2c5334f41bd Daniel Vetter     2013-08-15  438  	}
d0b2c5334f41bd Daniel Vetter     2013-08-15  439  
d0b2c5334f41bd Daniel Vetter     2013-08-15  440  	dmabuf = drm_prime_lookup_buf_by_handle(&file_priv->prime, handle);
d0b2c5334f41bd Daniel Vetter     2013-08-15  441  	if (dmabuf) {
d0b2c5334f41bd Daniel Vetter     2013-08-15  442  		get_dma_buf(dmabuf);
f3facd92ee25e0 Felix Kuehling    2023-11-21  443  		goto out;
d0b2c5334f41bd Daniel Vetter     2013-08-15  444  	}
3248877ea17969 Dave Airlie       2011-11-25  445  
d0b2c5334f41bd Daniel Vetter     2013-08-15  446  	mutex_lock(&dev->object_name_lock);
3248877ea17969 Dave Airlie       2011-11-25  447  	/* re-export the original imported object */
3248877ea17969 Dave Airlie       2011-11-25  448  	if (obj->import_attach) {
219b47339ced80 Dave Airlie       2013-04-22  449  		dmabuf = obj->import_attach->dmabuf;
319c933c71f3db Daniel Vetter     2013-08-15  450  		get_dma_buf(dmabuf);
219b47339ced80 Dave Airlie       2013-04-22  451  		goto out_have_obj;
3248877ea17969 Dave Airlie       2011-11-25  452  	}
3248877ea17969 Dave Airlie       2011-11-25  453  
319c933c71f3db Daniel Vetter     2013-08-15  454  	if (obj->dma_buf) {
319c933c71f3db Daniel Vetter     2013-08-15  455  		get_dma_buf(obj->dma_buf);
319c933c71f3db Daniel Vetter     2013-08-15  456  		dmabuf = obj->dma_buf;
219b47339ced80 Dave Airlie       2013-04-22  457  		goto out_have_obj;
219b47339ced80 Dave Airlie       2013-04-22  458  	}
219b47339ced80 Dave Airlie       2013-04-22  459  
319c933c71f3db Daniel Vetter     2013-08-15  460  	dmabuf = export_and_register_object(dev, obj, flags);
4332bf438bbbc3 Daniel Vetter     2013-08-15  461  	if (IS_ERR(dmabuf)) {
3248877ea17969 Dave Airlie       2011-11-25  462  		/* normally the created dma-buf takes ownership of the ref,
3248877ea17969 Dave Airlie       2011-11-25  463  		 * but if that fails then drop the ref
3248877ea17969 Dave Airlie       2011-11-25  464  		 */
4332bf438bbbc3 Daniel Vetter     2013-08-15  465  		ret = PTR_ERR(dmabuf);
d0b2c5334f41bd Daniel Vetter     2013-08-15  466  		mutex_unlock(&dev->object_name_lock);
219b47339ced80 Dave Airlie       2013-04-22  467  		goto out;
3248877ea17969 Dave Airlie       2011-11-25  468  	}
219b47339ced80 Dave Airlie       2013-04-22  469  
d0b2c5334f41bd Daniel Vetter     2013-08-15  470  out_have_obj:
d0b2c5334f41bd Daniel Vetter     2013-08-15  471  	/*
d0b2c5334f41bd Daniel Vetter     2013-08-15  472  	 * If we've exported this buffer then cheat and add it to the import list
d0b2c5334f41bd Daniel Vetter     2013-08-15  473  	 * so we get the correct handle back. We must do this under the
d0b2c5334f41bd Daniel Vetter     2013-08-15  474  	 * protection of dev->object_name_lock to ensure that a racing gem close
d0b2c5334f41bd Daniel Vetter     2013-08-15  475  	 * ioctl doesn't miss to remove this buffer handle from the cache.
0ff926c7d4f06f Dave Airlie       2012-05-20  476  	 */
219b47339ced80 Dave Airlie       2013-04-22  477  	ret = drm_prime_add_buf_handle(&file_priv->prime,
319c933c71f3db Daniel Vetter     2013-08-15  478  				       dmabuf, handle);
d0b2c5334f41bd Daniel Vetter     2013-08-15  479  	mutex_unlock(&dev->object_name_lock);
219b47339ced80 Dave Airlie       2013-04-22  480  	if (ret)
4332bf438bbbc3 Daniel Vetter     2013-08-15  481  		dma_buf_put(dmabuf);
219b47339ced80 Dave Airlie       2013-04-22  482  out:
be6ee102341bc4 Emil Velikov      2020-05-15  483  	drm_gem_object_put(obj);
d0b2c5334f41bd Daniel Vetter     2013-08-15  484  out_unlock:
d0b2c5334f41bd Daniel Vetter     2013-08-15  485  	mutex_unlock(&file_priv->prime.lock);
d0b2c5334f41bd Daniel Vetter     2013-08-15  486  
f3facd92ee25e0 Felix Kuehling    2023-11-21  487  	return ret ? ERR_PTR(ret) : dmabuf;
b283e92a2315f9 Daniel Vetter     2019-06-18  488  }
f3facd92ee25e0 Felix Kuehling    2023-11-21  489  EXPORT_SYMBOL(drm_gem_prime_handle_to_dmabuf);
b283e92a2315f9 Daniel Vetter     2019-06-18  490  

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


More information about the dri-devel mailing list