[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