* fs/notify/fanotify/fanotify_user.c:370:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing
@ 2020-08-05 7:38 ` kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-08-05 7:38 UTC (permalink / raw)
To: Amir Goldstein; +Cc: kbuild-all, linux-kernel, Jan Kara
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 <lkp@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-all@lists.01.org
^ permalink raw reply [flat|nested] 3+ messages in thread
* fs/notify/fanotify/fanotify_user.c:370:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing
@ 2020-08-05 7:38 ` kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2020-08-05 7:38 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 8022 bytes --]
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 <lkp@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-all(a)lists.01.org
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: fs/notify/fanotify/fanotify_user.c:370:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing
2020-08-05 7:38 ` kernel test robot
(?)
@ 2020-08-05 16:58 ` Amir Goldstein
-1 siblings, 0 replies; 3+ messages in thread
From: Amir Goldstein @ 2020-08-05 16:58 UTC (permalink / raw)
To: kernel test robot; +Cc: kbuild-all, linux-kernel, Jan Kara
On Wed, Aug 5, 2020 at 10:40 AM kernel test robot <lkp@intel.com> wrote:
>
> 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
Gee that's an old patch...
> compiler: nds32le-linux-gcc (GCC) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@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;
> ^
...
> 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 }
This is intentional.
The code is more readable and robust this way even though these
assignments have no effect in current code.
Thanks,
Amir.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-05 19:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-05 7:38 fs/notify/fanotify/fanotify_user.c:370:3: warning: Assignment of function parameter has no effect outside the function. Did you forget dereferencing kernel test robot
2020-08-05 7:38 ` kernel test robot
2020-08-05 16:58 ` Amir Goldstein
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.