[bug report] afs: Use netfslib for directories
Dan Carpenter
dan.carpenter at linaro.org
Fri Nov 15 00:50:20 PST 2024
Hello David Howells,
Commit 2b6bae4ca558 ("afs: Use netfslib for directories") from Nov 8,
2024 (linux-next), leads to the following Smatch static checker
warning:
fs/afs/dir.c:496 afs_dir_iterate_contents() warn: 'i_size' unsigned <= 0
fs/afs/dir.c:505 afs_dir_iterate_contents() warn: 'ret' is never (-116)
fs/afs/dir.c:507 afs_dir_iterate_contents() info: returning a literal zero is cleaner
fs/afs/dir.c
486 static int afs_dir_iterate_contents(struct inode *dir, struct dir_context *ctx)
487 {
488 struct afs_vnode *dvnode = AFS_FS_I(dir);
489 struct iov_iter iter;
490 unsigned long long i_size = i_size_read(dir);
491 int ret = 0;
492
493 /* Round the file position up to the next entry boundary */
494 ctx->pos = round_up(ctx->pos, sizeof(union afs_xdr_dirent));
495
--> 496 if (i_size <= 0 || ctx->pos >= i_size)
i_size is unsigned and i_size_read() returns postive. We could change the
type to loff_t or the comparison to == 0.
497 return 0;
498
499 iov_iter_folio_queue(&iter, ITER_SOURCE, dvnode->directory, 0, 0, i_size);
500 iov_iter_advance(&iter, round_down(ctx->pos, AFS_DIR_BLOCK_SIZE));
501
502 iterate_folioq(&iter, iov_iter_count(&iter), dvnode, ctx,
503 afs_dir_iterate_step);
504
505 if (ret == -ESTALE)
ret is zero.
506 afs_invalidate_dir(dvnode, afs_dir_invalid_iter_stale);
507 return ret;
508 }
regards,
dan carpenter
More information about the linux-afs
mailing list