Hi wangtao,

kernel test robot noticed the following build errors:

[auto build test ERROR on brauner-vfs/vfs.all]
[also build test ERROR on next-20250530]
[cannot apply to linus/master v6.15]
[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/wangtao/fs-allow-cross-FS-copy_file_range-for-memory-backed-files/20250530-184146
base:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.all
patch link:    
https://lore.kernel.org/r/20250530103941.11092-4-tao.wangtao%40honor.com
patch subject: [PATCH v3 3/4] udmabuf: Implement udmabuf rw_file callback
config: sparc64-randconfig-002-20250530 
(https://download.01.org/0day-ci/archive/20250530/202505302235.mdzenmsm-...@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20250530/202505302235.mdzenmsm-...@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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202505302235.mdzenmsm-...@intel.com/

All error/warnings (new ones prefixed by >>):

   drivers/dma-buf/udmabuf.c: In function 'udmabuf_rw_file':
>> drivers/dma-buf/udmabuf.c:298:25: error: storage size of 'iter' isn't known
     298 |         struct iov_iter iter;
         |                         ^~~~
>> drivers/dma-buf/udmabuf.c:299:45: error: 'ITER_SOURCE' undeclared (first use 
>> in this function)
     299 |         unsigned int direction = is_write ? ITER_SOURCE : ITER_DEST;
         |                                             ^~~~~~~~~~~
   drivers/dma-buf/udmabuf.c:299:45: note: each undeclared identifier is 
reported only once for each function it appears in
>> drivers/dma-buf/udmabuf.c:299:59: error: 'ITER_DEST' undeclared (first use 
>> in this function)
     299 |         unsigned int direction = is_write ? ITER_SOURCE : ITER_DEST;
         |                                                           ^~~~~~~~~
>> drivers/dma-buf/udmabuf.c:327:17: error: implicit declaration of function 
>> 'iov_iter_bvec'; did you mean 'bvec_iter_bvec'? 
>> [-Wimplicit-function-declaration]
     327 |                 iov_iter_bvec(&iter, direction, bvec, bv_idx, 
bv_total);
         |                 ^~~~~~~~~~~~~
         |                 bvec_iter_bvec
>> drivers/dma-buf/udmabuf.c:298:25: warning: unused variable 'iter' 
>> [-Wunused-variable]
     298 |         struct iov_iter iter;
         |                         ^~~~


vim +298 drivers/dma-buf/udmabuf.c

   286  
   287  static ssize_t udmabuf_rw_file(struct dma_buf *dmabuf, loff_t my_pos,
   288                          struct file *other, loff_t pos,
   289                          size_t count, bool is_write)
   290  {
   291          struct udmabuf *ubuf = dmabuf->priv;
   292          loff_t my_end = my_pos + count, bv_beg, bv_end = 0;
   293          pgoff_t pg_idx = my_pos / PAGE_SIZE;
   294          pgoff_t pg_end = DIV_ROUND_UP(my_end, PAGE_SIZE);
   295          size_t i, bv_off, bv_len, bv_num, bv_idx = 0, bv_total = 0;
   296          struct bio_vec *bvec;
   297          struct kiocb kiocb;
 > 298          struct iov_iter iter;
 > 299          unsigned int direction = is_write ? ITER_SOURCE : ITER_DEST;
   300          ssize_t ret = 0, rw_total = 0;
   301          struct folio *folio;
   302  
   303          bv_num = min_t(size_t, pg_end - pg_idx + 1, 1024);
   304          bvec = kvcalloc(bv_num, sizeof(*bvec), GFP_KERNEL);
   305          if (!bvec)
   306                  return -ENOMEM;
   307  
   308          init_sync_kiocb(&kiocb, other);
   309          kiocb.ki_pos = pos;
   310  
   311          for (i = 0; i < ubuf->nr_pinned && my_pos < my_end; i++) {
   312                  folio = ubuf->pinned_folios[i];
   313                  bv_beg = bv_end;
   314                  bv_end += folio_size(folio);
   315                  if (bv_end <= my_pos)
   316                          continue;
   317  
   318                  bv_len = min(bv_end, my_end) - my_pos;
   319                  bv_off = my_pos - bv_beg;
   320                  my_pos += bv_len;
   321                  bv_total += bv_len;
   322                  bvec_set_page(&bvec[bv_idx], &folio->page, bv_len, 
bv_off);
   323                  if (++bv_idx < bv_num && my_pos < my_end)
   324                          continue;
   325  
   326                  /* start R/W if bvec is full or count reaches zero. */
 > 327                  iov_iter_bvec(&iter, direction, bvec, bv_idx, bv_total);
   328                  if (is_write)
   329                          ret = other->f_op->write_iter(&kiocb, &iter);
   330                  else
   331                          ret = other->f_op->read_iter(&kiocb, &iter);
   332                  if (ret <= 0)
   333                          break;
   334                  rw_total += ret;
   335                  if (ret < bv_total || fatal_signal_pending(current))
   336                          break;
   337  
   338                  bv_idx = bv_total = 0;
   339          }
   340          kvfree(bvec);
   341  
   342          return rw_total > 0 ? rw_total : ret;
   343  }
   344  

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

Reply via email to