fs/cifs/dfs_cache.c:1070:7: warning: variable 'rc' is used uninitialized whenever 'if' condition is true
Subsystems (2)
kernel test robot
build bottree: 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://download.01.org/0day-ci/archive/20230119/[email protected]/config) compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 4196ca3278f78c6e19246e54ab0ecb364e37d66a)
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 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 <[email protected]>
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) <[email protected]>
:::::: CC: Steve French <[email protected]>
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests
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 <[email protected]>
Sent: Wednesday, January 18, 2023 10:29 AM
To: pc <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; Steven French <[email protected]>
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 <[email protected]>
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);
~~~~~~~~~~ ^Quoted 1 line
Quoted 1 line
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)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Quoted 1 line
Quoted 1 line
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) <[email protected]>
:::::: CC: Steve French <[email protected]>
Signature · 2 lines
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