tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   4da9f3302615f4191814f826054846bf843e24fa
commit: 44d705b0370b1d581f46ff23e5d33e8b5ff8ec58 fanotify: report name info for 
FAN_DIR_MODIFY event
date:   4 months ago
compiler: nds32le-linux-gcc (GCC) 9.3.0

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


cppcheck warnings: (new ones prefixed by >>)

>> fs/notify/fanotify/fanotify_user.c:370:3: warning: Assignment of function 
>> parameter has no effect outside the function. Did you forget dereferencing 
>> it? [uselessAssignmentPtrArg]
     buf += ret;
     ^
>> fs/notify/fanotify/fanotify_user.c:371:3: warning: Assignment of function 
>> parameter has no effect outside the function. [uselessAssignmentArg]
     count -= ret;
     ^
   fs/notify/fanotify/fanotify_user.c:426:8: warning: Variable 'ret' is 
reassigned a value before the old one has been used. [redundantAssignment]
      ret = -ERESTARTSYS;
          ^
   fs/notify/fanotify/fanotify_user.c:422:8: note: Variable 'ret' is reassigned 
a value before the old one has been used.
      ret = -EAGAIN;
          ^
   fs/notify/fanotify/fanotify_user.c:426:8: note: Variable 'ret' is reassigned 
a value before the old one has been used.
      ret = -ERESTARTSYS;
          ^
   fs/notify/fanotify/fanotify_user.c:613:7: warning: Variable 'ret' is 
reassigned a value before the old one has been used. [redundantAssignment]
     ret = -ENOTDIR;
         ^
   fs/notify/fanotify/fanotify_user.c:609:7: note: Variable 'ret' is reassigned 
a value before the old one has been used.
     ret = -EBADF;
         ^
   fs/notify/fanotify/fanotify_user.c:613:7: note: Variable 'ret' is reassigned 
a value before the old one has been used.
     ret = -ENOTDIR;
         ^
   fs/notify/fanotify/fanotify_user.c:637:6: warning: Variable 'ret' is 
reassigned a value before the old one has been used. [redundantAssignment]
    ret = inode_permission(path->dentry->d_inode, MAY_READ);
        ^
   fs/notify/fanotify/fanotify_user.c:613:7: note: Variable 'ret' is reassigned 
a value before the old one has been used.
     ret = -ENOTDIR;
         ^
   fs/notify/fanotify/fanotify_user.c:637:6: note: Variable 'ret' is reassigned 
a value before the old one has been used.
    ret = inode_permission(path->dentry->d_inode, MAY_READ);
        ^
   fs/notify/fanotify/fanotify_user.c:945:5: warning: Variable 'fd' is 
reassigned a value before the old one has been used. [redundantAssignment]
    fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags);
       ^
   fs/notify/fanotify/fanotify_user.c:922:6: note: Variable 'fd' is reassigned 
a value before the old one has been used.
     fd = -EPERM;
        ^
   fs/notify/fanotify/fanotify_user.c:945:5: note: Variable 'fd' is reassigned 
a value before the old one has been used.
    fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags);
       ^
   fs/notify/fanotify/fanotify_user.c:945:5: warning: Variable 'fd' is 
reassigned a value before the old one has been used. [redundantAssignment]
    fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags);
       ^
   fs/notify/fanotify/fanotify_user.c:931:6: note: Variable 'fd' is reassigned 
a value before the old one has been used.
     fd = -EPERM;
        ^
   fs/notify/fanotify/fanotify_user.c:945:5: note: Variable 'fd' is reassigned 
a value before the old one has been used.
    fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags);
       ^
   fs/notify/fanotify/fanotify_user.c:945:5: warning: Variable 'fd' is 
reassigned a value before the old one has been used. [redundantAssignment]
    fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags);
       ^
   fs/notify/fanotify/fanotify_user.c:940:6: note: Variable 'fd' is reassigned 
a value before the old one has been used.
     fd = -EPERM;
        ^
   fs/notify/fanotify/fanotify_user.c:945:5: note: Variable 'fd' is reassigned 
a value before the old one has been used.
    fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags);
       ^
   fs/notify/fanotify/fanotify_user.c:1086:6: warning: Variable 'ret' is 
reassigned a value before the old one has been used. [redundantAssignment]
    ret = -EINVAL;
        ^
   fs/notify/fanotify/fanotify_user.c:1077:6: note: Variable 'ret' is 
reassigned a value before the old one has been used.
    ret = -EINVAL;
        ^
   fs/notify/fanotify/fanotify_user.c:1086:6: note: Variable 'ret' is 
reassigned a value before the old one has been used.
    ret = -EINVAL;
        ^
   fs/notify/fanotify/fanotify_user.c:1114:6: warning: Variable 'ret' is 
reassigned a value before the old one has been used. [redundantAssignment]
    ret = fanotify_find_path(dfd, pathname, &path, flags,
        ^
   fs/notify/fanotify/fanotify_user.c:1086:6: note: Variable 'ret' is 
reassigned a value before the old one has been used.
    ret = -EINVAL;
        ^
   fs/notify/fanotify/fanotify_user.c:1114:6: note: Variable 'ret' is 
reassigned a value before the old one has been used.
    ret = fanotify_find_path(dfd, pathname, &path, flags,
        ^

vim +370 fs/notify/fanotify/fanotify_user.c

   301  
   302  static ssize_t copy_event_to_user(struct fsnotify_group *group,
   303                                    struct fanotify_event *event,
   304                                    char __user *buf, size_t count)
   305  {
   306          struct fanotify_event_metadata metadata;
   307          struct path *path = fanotify_event_path(event);
   308          struct file *f = NULL;
   309          int ret, fd = FAN_NOFD;
   310  
   311          pr_debug("%s: group=%p event=%p\n", __func__, group, event);
   312  
   313          metadata.event_len = FAN_EVENT_METADATA_LEN +
   314                                          fanotify_event_info_len(event);
   315          metadata.metadata_len = FAN_EVENT_METADATA_LEN;
   316          metadata.vers = FANOTIFY_METADATA_VERSION;
   317          metadata.reserved = 0;
   318          metadata.mask = event->mask & FANOTIFY_OUTGOING_EVENTS;
   319          metadata.pid = pid_vnr(event->pid);
   320  
   321          if (path && path->mnt && path->dentry) {
   322                  fd = create_fd(group, path, &f);
   323                  if (fd < 0)
   324                          return fd;
   325          }
   326          metadata.fd = fd;
   327  
   328          ret = -EFAULT;
   329          /*
   330           * Sanity check copy size in case get_one_event() and
   331           * fill_event_metadata() event_len sizes ever get out of sync.
   332           */
   333          if (WARN_ON_ONCE(metadata.event_len > count))
   334                  goto out_close_fd;
   335  
   336          if (copy_to_user(buf, &metadata, FAN_EVENT_METADATA_LEN))
   337                  goto out_close_fd;
   338  
   339          buf += FAN_EVENT_METADATA_LEN;
   340          count -= FAN_EVENT_METADATA_LEN;
   341  
   342          if (fanotify_is_perm_event(event->mask))
   343                  FANOTIFY_PERM(event)->fd = fd;
   344  
   345          if (f)
   346                  fd_install(fd, f);
   347  
   348          /* Event info records order is: dir fid + name, child fid */
   349          if (fanotify_event_name_len(event)) {
   350                  struct fanotify_name_event *fne = FANOTIFY_NE(event);
   351  
   352                  ret = copy_info_to_user(fanotify_event_fsid(event),
   353                                          fanotify_event_dir_fh(event),
   354                                          fne->name, fne->name_len,
   355                                          buf, count);
   356                  if (ret < 0)
   357                          return ret;
   358  
   359                  buf += ret;
   360                  count -= ret;
   361          }
   362  
   363          if (fanotify_event_object_fh_len(event)) {
   364                  ret = copy_info_to_user(fanotify_event_fsid(event),
   365                                          fanotify_event_object_fh(event),
   366                                          NULL, 0, buf, count);
   367                  if (ret < 0)
   368                          return ret;
   369  
 > 370                  buf += ret;
 > 371                  count -= ret;
   372          }
   373  
   374          return metadata.event_len;
   375  
   376  out_close_fd:
   377          if (fd != FAN_NOFD) {
   378                  put_unused_fd(fd);
   379                  fput(f);
   380          }
   381          return ret;
   382  }
   383  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Reply via email to