Re: [PATCH 1/1] fs: inotify: Add full paths option to inotify

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

 



Hi Oliver,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on jack-fs/fsnotify]
[also build test ERROR on linus/master v5.19-rc1 next-20220606]
[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]

url:    https://github.com/intel-lab-lkp/linux/commits/Oliver-Ford/fs-inotify-Add-full-paths-option-to-inotify/20220607-064615
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git fsnotify
config: hexagon-randconfig-r018-20220607 (https://download.01.org/0day-ci/archive/20220607/202206071212.ER5BjGEI-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project b92436efcb7813fc481b30f2593a4907568d917a)
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
        # https://github.com/intel-lab-lkp/linux/commit/67d0b1ab6f9129e4902f90506f2ab045ddbae43f
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Oliver-Ford/fs-inotify-Add-full-paths-option-to-inotify/20220607-064615
        git checkout 67d0b1ab6f9129e4902f90506f2ab045ddbae43f
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash fs/notify/inotify/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

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

>> fs/notify/inotify/inotify_user.c:219:12: error: call to undeclared function 'inotify_idr_find'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                   i_mark = inotify_idr_find(group, event->wd);
                            ^
>> fs/notify/inotify/inotify_user.c:219:10: warning: incompatible integer to pointer conversion assigning to 'struct inotify_inode_mark *' from 'int' [-Wint-conversion]
                   i_mark = inotify_idr_find(group, event->wd);
                          ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fs/notify/inotify/inotify_user.c:451:35: error: static declaration of 'inotify_idr_find' follows non-static declaration
   static struct inotify_inode_mark *inotify_idr_find(struct fsnotify_group *group,
                                     ^
   fs/notify/inotify/inotify_user.c:219:12: note: previous implicit declaration is here
                   i_mark = inotify_idr_find(group, event->wd);
                            ^
   1 warning and 2 errors generated.


vim +/inotify_idr_find +219 fs/notify/inotify/inotify_user.c

   194	
   195	/*
   196	 * Copy an event to user space, returning how much we copied.
   197	 *
   198	 * We already checked that the event size is smaller than the
   199	 * buffer we had in "get_one_event()" above.
   200	 */
   201	static ssize_t copy_event_to_user(struct fsnotify_group *group,
   202					  struct fsnotify_event *fsn_event,
   203					  char __user *buf)
   204	{
   205		struct inotify_event inotify_event;
   206		struct inotify_event_info *event;
   207		struct path event_path;
   208		struct inotify_inode_mark *i_mark;
   209		size_t event_size = sizeof(struct inotify_event);
   210		size_t name_len;
   211		size_t pad_name_len;
   212	
   213		pr_debug("%s: group=%p event=%p\n", __func__, group, fsn_event);
   214	
   215		event = INOTIFY_E(fsn_event);
   216		/* ensure caller has access to view the full path */
   217		if (event->mask & IN_FULL_PATHS && event->mask & IN_MOVE_SELF &&
   218		    kern_path(event->name, 0, &event_path)) {
 > 219			i_mark = inotify_idr_find(group, event->wd);
   220			if (likely(i_mark)) {
   221				fsnotify_destroy_mark(&i_mark->fsn_mark, group);
   222				/* match ref taken by inotify_idr_find */
   223				fsnotify_put_mark(&i_mark->fsn_mark);
   224			}
   225			return -EACCES;
   226		}
   227	
   228		name_len = event->name_len;
   229		/*
   230		 * round up name length so it is a multiple of event_size
   231		 * plus an extra byte for the terminating '\0'.
   232		 */
   233		pad_name_len = round_event_name_len(fsn_event);
   234		inotify_event.len = pad_name_len;
   235		inotify_event.mask = inotify_mask_to_arg(event->mask);
   236		inotify_event.wd = event->wd;
   237		inotify_event.cookie = event->sync_cookie;
   238	
   239		/* send the main event */
   240		if (copy_to_user(buf, &inotify_event, event_size))
   241			return -EFAULT;
   242	
   243		buf += event_size;
   244	
   245		/*
   246		 * fsnotify only stores the pathname, so here we have to send the pathname
   247		 * and then pad that pathname out to a multiple of sizeof(inotify_event)
   248		 * with zeros.
   249		 */
   250		if (pad_name_len) {
   251			/* copy the path name */
   252			if (copy_to_user(buf, event->name, name_len))
   253				return -EFAULT;
   254			buf += name_len;
   255	
   256			/* fill userspace with 0's */
   257			if (clear_user(buf, pad_name_len - name_len))
   258				return -EFAULT;
   259			event_size += pad_name_len;
   260		}
   261	
   262		return event_size;
   263	}
   264	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux