RE: [EXTERNAL] [cifs:for-next 2/7] fs/cifs/dfs_cache.c:1070:7: warning: variable 'rc' is used uninitialized whenever 'if' condition is true

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thx for the report - now fixed by Paulo in "cifs: fix return of uninitialized rc in dfs_cache_update_tgthint()"

https://git.samba.org/?p=sfrench/cifs-2.6.git;a=patch;h=d6a49e8c4ca4d399ed65ac219585187fc8c2e2b1
-----Original Message-----
From: kernel test robot <lkp@xxxxxxxxx> 
Sent: Wednesday, January 18, 2023 10:29 AM
To: pc <pc@xxxxxx>
Cc: llvm@xxxxxxxxxxxxxxx; oe-kbuild-all@xxxxxxxxxxxxxxx; linux-cifs@xxxxxxxxxxxxxxx; samba-technical@xxxxxxxxxxxxxxx; Steven French <Steven.French@xxxxxxxxxxxxx>
Subject: [EXTERNAL] [cifs:for-next 2/7] fs/cifs/dfs_cache.c:1070:7: warning: variable 'rc' is used uninitialized whenever 'if' condition is true

tree:   git://git.samba.org/sfrench/cifs-2.6.git for-next
head:   027c69ea2097550090545e7c539e01a1998f7438
commit: 9e2e1207815ca38386ab7cb40ebcebc2a3918cb0 [2/7] cifs: avoid re-lookups in dfs_cache_find()
config: s390-randconfig-r034-20230116 (https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdownload.01.org%2F0day-ci%2Farchive%2F20230119%2F202301190004.bEHvbKG6-lkp%40intel.com%2Fconfig&data=05%7C01%7CSteven.French%40microsoft.com%7C1833e410654f404ca35708daf9713f39%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638096562049062332%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=5LeoPwPYSRBjtu1PmH3OlLgHpFqvibQNUh1Cif%2FJ2JQ%3D&reserved=0)
compiler: clang version 16.0.0 (https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fllvm%2Fllvm-project&data=05%7C01%7CSteven.French%40microsoft.com%7C1833e410654f404ca35708daf9713f39%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638096562049062332%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=7L7bbCEVbaQ3BwNUDH8uhkJNAui0Rel93tLX1XlmD8g%3D&reserved=0 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
reproduce (this is a W=1 build):
        wget https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.githubusercontent.com%2Fintel%2Flkp-tests%2Fmaster%2Fsbin%2Fmake.cross&data=05%7C01%7CSteven.French%40microsoft.com%7C1833e410654f404ca35708daf9713f39%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638096562049062332%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=75yyDPhXVdagZbTTg7fFw7%2BmpS0vSY%2Fyx63EjkawG3k%3D&reserved=0 -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install s390 cross compiling tool for clang build
        # apt-get install binutils-s390x-linux-gnu
        git remote add cifs git://git.samba.org/sfrench/cifs-2.6.git
        git fetch --no-tags cifs for-next
        git checkout 9e2e1207815ca38386ab7cb40ebcebc2a3918cb0
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=s390 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash drivers/net/ethernet/mellanox/mlx5/core/ fs/cifs/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   In file included from fs/cifs/dfs_cache.c:15:
   In file included from fs/cifs/cifsglob.h:14:
   In file included from include/linux/inet.h:42:
   In file included from include/net/net_namespace.h:43:
   In file included from include/linux/skbuff.h:31:
   In file included from include/linux/dma-mapping.h:10:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:75:
   include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           val = __raw_readb(PCI_IOBASE + addr);
                             ~~~~~~~~~~ ^
   include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
                                                           ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
   #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
                                                             ^
   include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
   #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
                                                        ^
   In file included from fs/cifs/dfs_cache.c:15:
   In file included from fs/cifs/cifsglob.h:14:
   In file included from include/linux/inet.h:42:
   In file included from include/net/net_namespace.h:43:
   In file included from include/linux/skbuff.h:31:
   In file included from include/linux/dma-mapping.h:10:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:75:
   include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
                                                           ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
   #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
                                                             ^
   include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
   #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
                                                        ^
   In file included from fs/cifs/dfs_cache.c:15:
   In file included from fs/cifs/cifsglob.h:14:
   In file included from include/linux/inet.h:42:
   In file included from include/net/net_namespace.h:43:
   In file included from include/linux/skbuff.h:31:
   In file included from include/linux/dma-mapping.h:10:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:75:
   include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           __raw_writeb(value, PCI_IOBASE + addr);
                               ~~~~~~~~~~ ^
   include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
                                                         ~~~~~~~~~~ ^
   include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
                                                         ~~~~~~~~~~ ^
   include/asm-generic/io.h:692:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           readsb(PCI_IOBASE + addr, buffer, count);
                  ~~~~~~~~~~ ^
   include/asm-generic/io.h:700:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           readsw(PCI_IOBASE + addr, buffer, count);
                  ~~~~~~~~~~ ^
   include/asm-generic/io.h:708:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           readsl(PCI_IOBASE + addr, buffer, count);
                  ~~~~~~~~~~ ^
   include/asm-generic/io.h:717:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           writesb(PCI_IOBASE + addr, buffer, count);
                   ~~~~~~~~~~ ^
   include/asm-generic/io.h:726:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           writesw(PCI_IOBASE + addr, buffer, count);
                   ~~~~~~~~~~ ^
   include/asm-generic/io.h:735:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
           writesl(PCI_IOBASE + addr, buffer, count);
                   ~~~~~~~~~~ ^
>> fs/cifs/dfs_cache.c:1070:7: warning: variable 'rc' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
                   if (!strcasecmp(t->name, it->it_name)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/dfs_cache.c:1082:9: note: uninitialized use occurs here
           return rc;
                  ^~
   fs/cifs/dfs_cache.c:1070:3: note: remove the 'if' if its condition is always false
                   if (!strcasecmp(t->name, it->it_name)) {
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fs/cifs/dfs_cache.c:1069:2: warning: variable 'rc' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
           list_for_each_entry(t, &ce->tlist, list) {
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:675:7: note: expanded from macro 'list_for_each_entry'
                !list_entry_is_head(pos, head, member);                    \
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/dfs_cache.c:1082:9: note: uninitialized use occurs here
           return rc;
                  ^~
   fs/cifs/dfs_cache.c:1069:2: note: remove the condition if it is always true
           list_for_each_entry(t, &ce->tlist, list) {
           ^
   include/linux/list.h:675:7: note: expanded from macro 'list_for_each_entry'
                !list_entry_is_head(pos, head, member);                    \
                ^
   fs/cifs/dfs_cache.c:1066:6: warning: variable 'rc' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
           if (likely(!strcasecmp(it->it_name, t->name)))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:77:20: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/dfs_cache.c:1082:9: note: uninitialized use occurs here
           return rc;
                  ^~
   fs/cifs/dfs_cache.c:1066:2: note: remove the 'if' if its condition is always false
           if (likely(!strcasecmp(it->it_name, t->name)))
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/dfs_cache.c:1038:8: note: initialize the variable 'rc' to silence this warning
           int rc;
                 ^
                  = 0
   15 warnings generated.


vim +1070 fs/cifs/dfs_cache.c

54be1f6c1c3749 Paulo Alcantara        2018-11-14  1015  
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1016  /**
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1017   * dfs_cache_update_tgthint - update target hint of a DFS cache entry
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1018   *
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1019   * If it doesn't find the cache entry, then it will get a DFS referral for @path
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1020   * and create a new entry.
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1021   *
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1022   * In case the cache entry exists but expired, it will get a DFS referral
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1023   * for @path and then update the respective cache entry.
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1024   *
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1025   * @xid: syscall id
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1026   * @ses: smb session
c870a8e70e6827 Paulo Alcantara        2021-06-04  1027   * @cp: codepage
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1028   * @remap: type of character remapping for paths
c870a8e70e6827 Paulo Alcantara        2021-06-04  1029   * @path: path to lookup in DFS referral cache
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1030   * @it: DFS target iterator
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1031   *
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1032   * Return zero if the target hint was updated successfully, otherwise non-zero.
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1033   */
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1034  int dfs_cache_update_tgthint(const unsigned int xid, struct cifs_ses *ses,
c870a8e70e6827 Paulo Alcantara        2021-06-04  1035  			     const struct nls_table *cp, int remap, const char *path,
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1036  			     const struct dfs_cache_tgt_iterator *it)
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1037  {
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1038  	int rc;
9cfdb1c12bae26 Al Viro                2021-03-18  1039  	const char *npath;
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04  1040) 	struct cache_entry *ce;
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04  1041) 	struct cache_dfs_tgt *t;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1042  
c870a8e70e6827 Paulo Alcantara        2021-06-04  1043  	npath = dfs_cache_canonical_path(path, cp, remap);
c870a8e70e6827 Paulo Alcantara        2021-06-04  1044  	if (IS_ERR(npath))
c870a8e70e6827 Paulo Alcantara        2021-06-04  1045  		return PTR_ERR(npath);
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1046  
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1047) 	cifs_dbg(FYI, "%s: update target hint - path: %s\n", __func__, npath);
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1048) 
9e2e1207815ca3 Paulo Alcantara        2023-01-17  1049  	ce = cache_refresh_path(xid, ses, npath);
9e2e1207815ca3 Paulo Alcantara        2023-01-17  1050  	if (IS_ERR(ce)) {
9e2e1207815ca3 Paulo Alcantara        2023-01-17  1051  		rc = PTR_ERR(ce);
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1052) 		goto out_free_path;
9e2e1207815ca3 Paulo Alcantara        2023-01-17  1053  	}
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1054) 
9e2e1207815ca3 Paulo Alcantara        2023-01-17  1055  	up_read(&htable_rw_lock);
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1056) 	down_write(&htable_rw_lock);
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1057  
42caeba713b12e Paulo Alcantara        2021-06-04  1058  	ce = lookup_cache_entry(npath);
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1059  	if (IS_ERR(ce)) {
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1060  		rc = PTR_ERR(ce);
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1061) 		goto out_unlock;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1062  	}
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1063  
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04  1064) 	t = ce->tgthint;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1065  
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04  1066) 	if (likely(!strcasecmp(it->it_name, t->name)))
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1067) 		goto out_unlock;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1068  
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04 @1069) 	list_for_each_entry(t, &ce->tlist, list) {
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04 @1070) 		if (!strcasecmp(t->name, it->it_name)) {
185352ae6171c8 Paulo Alcantara (SUSE  2019-12-04  1071) 			ce->tgthint = t;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1072  			cifs_dbg(FYI, "%s: new target hint: %s\n", __func__,
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1073  				 it->it_name);
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1074  			break;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1075  		}
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1076  	}
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1077  
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1078) out_unlock:
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1079) 	up_write(&htable_rw_lock);
742d8de0186e9f Paulo Alcantara (SUSE  2019-12-04  1080) out_free_path:
c870a8e70e6827 Paulo Alcantara        2021-06-04  1081  	kfree(npath);
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1082  	return rc;
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1083  }
54be1f6c1c3749 Paulo Alcantara        2018-11-14  1084  

:::::: The code at line 1070 was first introduced by commit
:::::: 185352ae6171c845951e21017b2925a6f2795904 cifs: Clean up DFS referral cache

:::::: TO: Paulo Alcantara (SUSE) <pc@xxxxxx>
:::::: CC: Steve French <stfrench@xxxxxxxxxxxxx>

-- 
0-DAY CI Kernel Test Service
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fintel%2Flkp-tests&data=05%7C01%7CSteven.French%40microsoft.com%7C1833e410654f404ca35708daf9713f39%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638096562049062332%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=2%2FaMr%2BJRh%2F9Eq1wPTvesvBKIQmq4dVdxboQrKRSHjIk%3D&reserved=0




[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux