Re: [GIT PULL for v7.1] vfs fixes
From: David Howells
Date: Mon May 18 2026 - 17:05:20 EST
Nathan Chancellor <nathan@xxxxxxxxxx> wrote:
> > David Howells (22):
> > netfs: Fix potential for tearing in ->remote_i_size and ->zero_point
> ...
> > fs/smb/client/cifsfs.c | 38 ++++--
>
> The changes in this file from that patch breaks the build with clang:
>
> fs/smb/client/cifsfs.c:1390:29: error: variable 'old_size' is uninitialized when used here [-Werror,-Wuninitialized]
> 1390 | if (rc == 0 && new_size > old_size) {
> | ^~~~~~~~
> fs/smb/client/cifsfs.c:1307:37: note: initialize the variable 'old_size' to silence this warning
> 1307 | unsigned long long i_size, old_size, new_size, zero_point;
> | ^
> | = 0
> fs/smb/client/cifsfs.c:1375:13: error: variable 'zero_point' is uninitialized when used here [-Werror,-Wuninitialized]
> 1375 | if (fend > zero_point)
> | ^~~~~~~~~~
> fs/smb/client/cifsfs.c:1307:59: note: initialize the variable 'zero_point' to silence this warning
> 1307 | unsigned long long i_size, old_size, new_size, zero_point;
> | ^
> | = 0
> 2 errors generated.
For some reason, make W=1 with gcc doesn't seem to generate uninitialised
variable warnings (though maybe clang does?). Is that specifically
suppressed?
ifdef CONFIG_CC_IS_GCC
KBUILD_CFLAGS += -Wno-maybe-uninitialized
endif
I guess. Can we remove that?
> There were no -next updates last week, so it seems like the majority of
> this pull request saw zero -next testing time. I see two kbuild test
> robot build reports but I guess they were ignored.
>
> https://lore.kernel.org/202605031459.eX5UbO3K-lkp@xxxxxxxxx/
> https://lore.kernel.org/202605021450.ca5QGqLH-lkp@xxxxxxxxx/
Gmail labelled them as spam :-(
I think this should be fixed as below, but Steve needs to look it over.
David
---
commit dd962b95985a8b5bc564c5c4f6c48edbc2cbc02d
Author: David Howells <dhowells@xxxxxxxxxx>
Date: Mon May 18 21:45:45 2026 +0100
cifs: Fix undefined variables
Fix a couple of undefined variables introduced by the patch to fix tearing
on ->remote_i_size and ->zero_point. For some reason, make W=1 with gcc
doesn't give undefined variable warnings (but clang does).
Fixes: 2c8f4742bb76 ("netfs: Fix potential for tearing in ->remote_i_size and ->zero_point")
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Closes: https://lore.kernel.org/oe-kbuild-all/202605031459.eX5UbO3K-lkp@xxxxxxxxx/
Closes: https://lore.kernel.org/oe-kbuild-all/202605021450.ca5QGqLH-lkp@xxxxxxxxx/
cc: Steve French <sfrench@xxxxxxxxx>
cc: Paulo Alcantara <pc@xxxxxxxxxxxxx>
cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>
cc: Christian Brauner <brauner@xxxxxxxxxx>
cc: linux-cifs@xxxxxxxxxxxxxxx
cc: netfs@xxxxxxxxxxxxxxx
cc: linux-fsdevel@xxxxxxxxxxxxxxx
diff --git a/fs/smb/client/cifsfs.c b/fs/smb/client/cifsfs.c
index feac491c5070..f557eb7875c7 100644
--- a/fs/smb/client/cifsfs.c
+++ b/fs/smb/client/cifsfs.c
@@ -1304,7 +1304,7 @@ static loff_t cifs_remap_file_range(struct file *src_file, loff_t off,
struct cifsFileInfo *smb_file_src = src_file->private_data;
struct cifsFileInfo *smb_file_target = dst_file->private_data;
struct cifs_tcon *target_tcon, *src_tcon;
- unsigned long long i_size, old_size, new_size, zero_point;
+ unsigned long long i_size, new_size;
unsigned long long destend, fstart, fend;
unsigned int xid;
int rc;
@@ -1372,7 +1372,7 @@ static loff_t cifs_remap_file_range(struct file *src_file, loff_t off,
goto unlock;
spin_lock(&target_inode->i_lock);
- if (fend > zero_point)
+ if (fend > target_cifsi->netfs._zero_point)
netfs_write_zero_point(target_inode, fend + 1);
i_size = target_inode->i_size;
spin_unlock(&target_inode->i_lock);
@@ -1387,7 +1387,7 @@ static loff_t cifs_remap_file_range(struct file *src_file, loff_t off,
if (target_tcon->ses->server->ops->duplicate_extents) {
rc = target_tcon->ses->server->ops->duplicate_extents(xid,
smb_file_src, smb_file_target, off, len, destoff);
- if (rc == 0 && new_size > old_size) {
+ if (rc == 0 && new_size > i_size) {
truncate_setsize(target_inode, new_size);
fscache_resize_cookie(cifs_inode_cookie(target_inode),
new_size);