Re: [PATCH v3 2/3] fs: split off vfs_getdents function of getdents64 syscall

kernel test robot
2021-11-26T06:46:24Z

Hi Stefan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on de5de0813b7dbbb71fb5d677ed823505a0e685c5]

url: https://github.com/0day-ci/linux/commits/Stefan-Roesch/io_uring-add-getdents64-support/20211126-072952
base: de5de0813b7dbbb71fb5d677ed823505a0e685c5
config: mips-buildonly-randconfig-r003-20211125 (https://download.01.org/0day-ci/archive/20211126/202111261416.mniOvY08-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 0332d105b9ad7f1f0ffca7e78b71de8b3a48f158)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://github.com/0day-ci/linux/commit/018019be0b26997402fe7ba8367e5260ec2aa8c8
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Stefan-Roesch/io_uring-add-getdents64-support/20211126-072952
git checkout 018019be0b26997402fe7ba8367e5260ec2aa8c8
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=mips

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/readdir.c:379:5: warning: no previous prototype for function 'vfs_getdents' [-Wmissing-prototypes]
int vfs_getdents(struct file *file, struct linux_dirent64 __user *dirent,
^
fs/readdir.c:379:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int vfs_getdents(struct file *file, struct linux_dirent64 __user *dirent,
^
static
1 warning generated.

vim +/vfs_getdents +379 fs/readdir.c

370
371 /**
372 * vfs_getdents - getdents without fdget
373 * @file : pointer to file struct of directory
374 * @dirent : pointer to user directory structure
375 * @count : size of buffer
376 * @ctx_pos : if file pos is used, pass -1,
377 * if ctx pos is used, pass ctx pos
378 */
> 379 int vfs_getdents(struct file *file, struct linux_dirent64 __user *dirent,
380 unsigned int count, s64 ctx_pos)
381 {
382 struct getdents_callback64 buf = {
383 .ctx.actor = filldir64,
384 .ctx.pos = ctx_pos,
385 .count = count,
386 .current_dir = dirent
387 };
388 int error;
389
390 error = do_iterate_dir(file, &buf.ctx, ctx_pos < 0);
391 if (error >= 0)
392 error = buf.error;
393 if (buf.prev_reclen) {
394 struct linux_dirent64 __user * lastdirent;
395 typeof(lastdirent->d_off) d_off = buf.ctx.pos;
396
397 lastdirent = (void __user *) buf.current_dir - buf.prev_reclen;
398 if (put_user(d_off, &lastdirent->d_off))
399 error = -EFAULT;
400 else
401 error = count - buf.count;
402 }
403
404 return error;
405 }
406

---
0-DAY CI Kernel Test Service, Intel Corporation