tree: git://github.com/smfrench/smb3-kernel.git for-next head: 5279203f772d0e52e17e13bef6b8ea81720caf1d commit: 5279203f772d0e52e17e13bef6b8ea81720caf1d [6/6] cifs: use a different reconnect helper for non-cifsd threads config: x86_64-randconfig-m001-20220214 (https://download.01.org/0day-ci/archive/20220216/202202161725.7B3m2CWC-lkp(a)intel.com/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 smatch warnings: fs/cifs/sess.c:129 cifs_try_adding_channels() warn: inconsistent indenting vim +129 fs/cifs/sess.c 118 119 /* returns number of channels added */ 120 int cifs_try_adding_channels(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses) 121 { 122 int old_chan_count, new_chan_count; 123 int left; 124 int i = 0; 125 int rc = 0; 126 int tries = 0; 127 struct cifs_server_iface *ifaces = NULL; 128 size_t iface_count; > 129 dump_stack(); 130 if (ses->server->dialect < SMB30_PROT_ID) { 131 cifs_dbg(VFS, "multichannel is not supported on this protocol version, use 3.0 or above\n"); 132 return 0; 133 } 134 135 spin_lock(&ses->chan_lock); 136 137 new_chan_count = old_chan_count = ses->chan_count; 138 left = ses->chan_max - ses->chan_count; 139 140 if (left <= 0) { 141 spin_unlock(&ses->chan_lock); 142 cifs_dbg(VFS, 143 "ses already at max_channels (%zu), nothing to open. chan_max %zu\n", 144 ses->chan_max, ses->chan_count); 145 return 0; 146 } 147 148 if (!(ses->server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) { 149 ses->chan_max = 1; 150 spin_unlock(&ses->chan_lock); 151 cifs_dbg(VFS, "server %s does not support multichannel\n", ses->server->hostname); 152 return 0; 153 } 154 spin_unlock(&ses->chan_lock); 155 156 /* 157 * Make a copy of the iface list at the time and use that 158 * instead so as to not hold the iface spinlock for opening 159 * channels 160 */ 161 spin_lock(&ses->iface_lock); 162 iface_count = ses->iface_count; 163 if (iface_count <= 0) { 164 spin_unlock(&ses->iface_lock); 165 cifs_dbg(VFS, "no iface list available to open channels\n"); 166 return 0; 167 } 168 ifaces = kmemdup(ses->iface_list, iface_count*sizeof(*ifaces), 169 GFP_ATOMIC); 170 if (!ifaces) { 171 spin_unlock(&ses->iface_lock); 172 return 0; 173 } 174 spin_unlock(&ses->iface_lock); 175 176 /* 177 * Keep connecting to same, fastest, iface for all channels as 178 * long as its RSS. Try next fastest one if not RSS or channel 179 * creation fails. 180 */ 181 while (left > 0) { 182 struct cifs_server_iface *iface; 183 184 tries++; 185 if (tries > 3*ses->chan_max) { 186 cifs_dbg(FYI, "too many channel open attempts (%d channels left to open)\n", 187 left); 188 break; 189 } 190 191 iface = &ifaces[i]; 192 if (is_ses_using_iface(ses, iface) && !iface->rss_capable) { 193 i = (i+1) % iface_count; 194 continue; 195 } 196 197 rc = cifs_ses_add_channel(cifs_sb, ses, iface); 198 if (rc) { 199 cifs_dbg(FYI, "failed to open extra channel on iface#%d rc=%d\n", 200 i, rc); 201 i = (i+1) % iface_count; 202 continue; 203 } 204 205 cifs_dbg(FYI, "successfully opened new channel on iface#%d\n", 206 i); 207 left--; 208 new_chan_count++; 209 } 210 211 kfree(ifaces); 212 return new_chan_count - old_chan_count; 213 } 214 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org