Message ID | 20210326013146.80962-1-lsahlber@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | cifs: add support for FALLOC_FL_COLLAPSE_RANGE | expand |
Hi Ronnie, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on cifs/for-next] [also build test WARNING on v5.12-rc4 next-20210325] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Ronnie-Sahlberg/cifs-add-support-for-FALLOC_FL_COLLAPSE_RANGE/20210326-093328 base: git://git.samba.org/sfrench/cifs-2.6.git for-next config: x86_64-randconfig-a015-20210325 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project f490a5969bd52c8a48586f134ff8f02ccbb295b3) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/0536911dc253bdf2243c8054b5f6fbd256dcdb49 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Ronnie-Sahlberg/cifs-add-support-for-FALLOC_FL_COLLAPSE_RANGE/20210326-093328 git checkout 0536911dc253bdf2243c8054b5f6fbd256dcdb49 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): fs/cifs/smb2ops.c:3654:6: warning: expression result unused [-Wunused-value] rc -EFBIG; ~~ ^~~~~~ fs/cifs/smb2ops.c:3660:6: warning: expression result unused [-Wunused-value] rc -EINVAL; ~~ ^~~~~~~ >> fs/cifs/smb2ops.c:3654:3: warning: variable 'rc' is uninitialized when used here [-Wuninitialized] rc -EFBIG; ^~ fs/cifs/smb2ops.c:3646:8: note: initialize the variable 'rc' to silence this warning int rc; ^ = 0 3 warnings generated. vim +/rc +3654 fs/cifs/smb2ops.c 3642 3643 static long smb3_collapse_range(struct file *file, struct cifs_tcon *tcon, 3644 loff_t off, loff_t len) 3645 { 3646 int rc; 3647 unsigned int xid; 3648 struct cifsFileInfo *cfile = file->private_data; 3649 __le64 eof; 3650 3651 xid = get_xid(); 3652 3653 if (off + len < off) { > 3654 rc -EFBIG; 3655 goto out; 3656 } 3657 3658 if (off >= i_size_read(file->f_inode) || 3659 off + len >= i_size_read(file->f_inode)) { 3660 rc -EINVAL; 3661 goto out; 3662 } 3663 3664 rc = smb2_copychunk_range(xid, cfile, cfile, off + len, 3665 i_size_read(file->f_inode) - off - len, off); 3666 if (rc < 0) 3667 goto out; 3668 3669 eof = i_size_read(file->f_inode) - len; 3670 rc = SMB2_set_eof(xid, tcon, cfile->fid.persistent_fid, 3671 cfile->fid.volatile_fid, cfile->pid, &eof); 3672 if (rc < 0) 3673 goto out; 3674 3675 rc = 0; 3676 out: 3677 free_xid(xid); 3678 return rc; 3679 } 3680 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Hi Ronnie, url: https://github.com/0day-ci/linux/commits/Ronnie-Sahlberg/cifs-add-support-for-FALLOC_FL_COLLAPSE_RANGE/20210326-093328 base: git://git.samba.org/sfrench/cifs-2.6.git for-next config: i386-randconfig-m021-20210325 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> New smatch warnings: fs/cifs/smb2ops.c:3654 smb3_collapse_range() warn: statement has no effect 5 fs/cifs/smb2ops.c:3654 smb3_collapse_range() error: uninitialized symbol 'rc'. Old smatch warnings: fs/cifs/smb2ops.c:3660 smb3_collapse_range() warn: statement has no effect 5 fs/cifs/smb2ops.c:3660 smb3_collapse_range() error: uninitialized symbol 'rc'. vim +3654 fs/cifs/smb2ops.c 0536911dc253bd Ronnie Sahlberg 2021-03-26 3643 static long smb3_collapse_range(struct file *file, struct cifs_tcon *tcon, 0536911dc253bd Ronnie Sahlberg 2021-03-26 3644 loff_t off, loff_t len) 0536911dc253bd Ronnie Sahlberg 2021-03-26 3645 { 0536911dc253bd Ronnie Sahlberg 2021-03-26 3646 int rc; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3647 unsigned int xid; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3648 struct cifsFileInfo *cfile = file->private_data; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3649 __le64 eof; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3650 0536911dc253bd Ronnie Sahlberg 2021-03-26 3651 xid = get_xid(); 0536911dc253bd Ronnie Sahlberg 2021-03-26 3652 0536911dc253bd Ronnie Sahlberg 2021-03-26 3653 if (off + len < off) { 0536911dc253bd Ronnie Sahlberg 2021-03-26 @3654 rc -EFBIG; Missing = character. 0536911dc253bd Ronnie Sahlberg 2021-03-26 3655 goto out; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3656 } 0536911dc253bd Ronnie Sahlberg 2021-03-26 3657 0536911dc253bd Ronnie Sahlberg 2021-03-26 3658 if (off >= i_size_read(file->f_inode) || 0536911dc253bd Ronnie Sahlberg 2021-03-26 3659 off + len >= i_size_read(file->f_inode)) { 0536911dc253bd Ronnie Sahlberg 2021-03-26 3660 rc -EINVAL; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3661 goto out; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3662 } 0536911dc253bd Ronnie Sahlberg 2021-03-26 3663 0536911dc253bd Ronnie Sahlberg 2021-03-26 3664 rc = smb2_copychunk_range(xid, cfile, cfile, off + len, 0536911dc253bd Ronnie Sahlberg 2021-03-26 3665 i_size_read(file->f_inode) - off - len, off); 0536911dc253bd Ronnie Sahlberg 2021-03-26 3666 if (rc < 0) 0536911dc253bd Ronnie Sahlberg 2021-03-26 3667 goto out; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3668 0536911dc253bd Ronnie Sahlberg 2021-03-26 3669 eof = i_size_read(file->f_inode) - len; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3670 rc = SMB2_set_eof(xid, tcon, cfile->fid.persistent_fid, 0536911dc253bd Ronnie Sahlberg 2021-03-26 3671 cfile->fid.volatile_fid, cfile->pid, &eof); 0536911dc253bd Ronnie Sahlberg 2021-03-26 3672 if (rc < 0) 0536911dc253bd Ronnie Sahlberg 2021-03-26 3673 goto out; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3674 0536911dc253bd Ronnie Sahlberg 2021-03-26 3675 rc = 0; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3676 out: 0536911dc253bd Ronnie Sahlberg 2021-03-26 3677 free_xid(xid); 0536911dc253bd Ronnie Sahlberg 2021-03-26 3678 return rc; 0536911dc253bd Ronnie Sahlberg 2021-03-26 3679 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index 9bae7e8deb09..1082c22551d7 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -3640,6 +3640,44 @@ static long smb3_simple_falloc(struct file *file, struct cifs_tcon *tcon, return rc; } +static long smb3_collapse_range(struct file *file, struct cifs_tcon *tcon, + loff_t off, loff_t len) +{ + int rc; + unsigned int xid; + struct cifsFileInfo *cfile = file->private_data; + __le64 eof; + + xid = get_xid(); + + if (off + len < off) { + rc -EFBIG; + goto out; + } + + if (off >= i_size_read(file->f_inode) || + off + len >= i_size_read(file->f_inode)) { + rc -EINVAL; + goto out; + } + + rc = smb2_copychunk_range(xid, cfile, cfile, off + len, + i_size_read(file->f_inode) - off - len, off); + if (rc < 0) + goto out; + + eof = i_size_read(file->f_inode) - len; + rc = SMB2_set_eof(xid, tcon, cfile->fid.persistent_fid, + cfile->fid.volatile_fid, cfile->pid, &eof); + if (rc < 0) + goto out; + + rc = 0; + out: + free_xid(xid); + return rc; +} + static loff_t smb3_llseek(struct file *file, struct cifs_tcon *tcon, loff_t offset, int whence) { struct cifsFileInfo *wrcfile, *cfile = file->private_data; @@ -3811,6 +3849,8 @@ static long smb3_fallocate(struct file *file, struct cifs_tcon *tcon, int mode, return smb3_zero_range(file, tcon, off, len, false); } else if (mode == FALLOC_FL_KEEP_SIZE) return smb3_simple_falloc(file, tcon, off, len, true); + else if (mode == FALLOC_FL_COLLAPSE_RANGE) + return smb3_collapse_range(file, tcon, off, len); else if (mode == 0) return smb3_simple_falloc(file, tcon, off, len, false);
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> --- fs/cifs/smb2ops.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+)