CC: [email protected] TO: Steve French <[email protected]>
tree: git://github.com/smfrench/smb3-kernel.git for-next head: 28711a66701e3aefc5748dcde38dba1e2e79de34 commit: 46c2db2a20898662a26fc3de1fa9499271049570 [12/18] cifs: take cifs_tcp_ses_lock for status checks :::::: branch date: 19 hours ago :::::: commit date: 19 hours ago config: x86_64-randconfig-m001-20211119 (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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: fs/cifs/smb1ops.c:229 cifs_get_next_mid() error: uninitialized symbol 'reconnect'. vim +/reconnect +229 fs/cifs/smb1ops.c a891f0f895f4a7 Pavel Shilovsky 2012-05-23 139 88257360605f93 Pavel Shilovsky 2012-05-23 140 /* 88257360605f93 Pavel Shilovsky 2012-05-23 141 * Find a free multiplex id (SMB mid). Otherwise there could be 88257360605f93 Pavel Shilovsky 2012-05-23 142 * mid collisions which might cause problems, demultiplexing the 88257360605f93 Pavel Shilovsky 2012-05-23 143 * wrong response to this request. Multiplex ids could collide if 88257360605f93 Pavel Shilovsky 2012-05-23 144 * one of a series requests takes much longer than the others, or 88257360605f93 Pavel Shilovsky 2012-05-23 145 * if a very large number of long lived requests (byte range 88257360605f93 Pavel Shilovsky 2012-05-23 146 * locks or FindNotify requests) are pending. No more than 88257360605f93 Pavel Shilovsky 2012-05-23 147 * 64K-1 requests can be outstanding at one time. If no 88257360605f93 Pavel Shilovsky 2012-05-23 148 * mids are available, return zero. A future optimization 88257360605f93 Pavel Shilovsky 2012-05-23 149 * could make the combination of mids and uid the key we use 88257360605f93 Pavel Shilovsky 2012-05-23 150 * to demultiplex on (rather than mid alone). 88257360605f93 Pavel Shilovsky 2012-05-23 151 * In addition to the above check, the cifs demultiplex 88257360605f93 Pavel Shilovsky 2012-05-23 152 * code already used the command code as a secondary 88257360605f93 Pavel Shilovsky 2012-05-23 153 * check of the frame and if signing is negotiated the 88257360605f93 Pavel Shilovsky 2012-05-23 154 * response would be discarded if the mid were the same 88257360605f93 Pavel Shilovsky 2012-05-23 155 * but the signature was wrong. Since the mid is not put in the 88257360605f93 Pavel Shilovsky 2012-05-23 156 * pending queue until later (when it is about to be dispatched) 88257360605f93 Pavel Shilovsky 2012-05-23 157 * we do have to limit the number of outstanding requests 88257360605f93 Pavel Shilovsky 2012-05-23 158 * to somewhat less than 64K-1 although it is hard to imagine 88257360605f93 Pavel Shilovsky 2012-05-23 159 * so many threads being in the vfs at one time. 88257360605f93 Pavel Shilovsky 2012-05-23 160 */ 88257360605f93 Pavel Shilovsky 2012-05-23 161 static __u64 88257360605f93 Pavel Shilovsky 2012-05-23 162 cifs_get_next_mid(struct TCP_Server_Info *server) 88257360605f93 Pavel Shilovsky 2012-05-23 163 { 88257360605f93 Pavel Shilovsky 2012-05-23 164 __u64 mid = 0; 88257360605f93 Pavel Shilovsky 2012-05-23 165 __u16 last_mid, cur_mid; 46c2db2a208986 Steve French 2021-11-19 166 bool collision, reconnect; 88257360605f93 Pavel Shilovsky 2012-05-23 167 88257360605f93 Pavel Shilovsky 2012-05-23 168 spin_lock(&GlobalMid_Lock); 88257360605f93 Pavel Shilovsky 2012-05-23 169 88257360605f93 Pavel Shilovsky 2012-05-23 170 /* mid is 16 bit only for CIFS/SMB */ 88257360605f93 Pavel Shilovsky 2012-05-23 171 cur_mid = (__u16)((server->CurrentMid) & 0xffff); 88257360605f93 Pavel Shilovsky 2012-05-23 172 /* we do not want to loop forever */ 88257360605f93 Pavel Shilovsky 2012-05-23 173 last_mid = cur_mid; 88257360605f93 Pavel Shilovsky 2012-05-23 174 cur_mid++; 03d9a9fe3f3aec Roberto Bergantinos Corpas 2019-10-14 175 /* avoid 0xFFFF MID */ 03d9a9fe3f3aec Roberto Bergantinos Corpas 2019-10-14 176 if (cur_mid == 0xffff) 03d9a9fe3f3aec Roberto Bergantinos Corpas 2019-10-14 177 cur_mid++; 88257360605f93 Pavel Shilovsky 2012-05-23 178 88257360605f93 Pavel Shilovsky 2012-05-23 179 /* 88257360605f93 Pavel Shilovsky 2012-05-23 180 * This nested loop looks more expensive than it is. 88257360605f93 Pavel Shilovsky 2012-05-23 181 * In practice the list of pending requests is short, 88257360605f93 Pavel Shilovsky 2012-05-23 182 * fewer than 50, and the mids are likely to be unique 88257360605f93 Pavel Shilovsky 2012-05-23 183 * on the first pass through the loop unless some request 88257360605f93 Pavel Shilovsky 2012-05-23 184 * takes longer than the 64 thousand requests before it 88257360605f93 Pavel Shilovsky 2012-05-23 185 * (and it would also have to have been a request that 88257360605f93 Pavel Shilovsky 2012-05-23 186 * did not time out). 88257360605f93 Pavel Shilovsky 2012-05-23 187 */ 88257360605f93 Pavel Shilovsky 2012-05-23 188 while (cur_mid != last_mid) { 88257360605f93 Pavel Shilovsky 2012-05-23 189 struct mid_q_entry *mid_entry; 88257360605f93 Pavel Shilovsky 2012-05-23 190 unsigned int num_mids; 88257360605f93 Pavel Shilovsky 2012-05-23 191 88257360605f93 Pavel Shilovsky 2012-05-23 192 collision = false; 88257360605f93 Pavel Shilovsky 2012-05-23 193 if (cur_mid == 0) 88257360605f93 Pavel Shilovsky 2012-05-23 194 cur_mid++; 88257360605f93 Pavel Shilovsky 2012-05-23 195 88257360605f93 Pavel Shilovsky 2012-05-23 196 num_mids = 0; 88257360605f93 Pavel Shilovsky 2012-05-23 197 list_for_each_entry(mid_entry, &server->pending_mid_q, qhead) { 88257360605f93 Pavel Shilovsky 2012-05-23 198 ++num_mids; 88257360605f93 Pavel Shilovsky 2012-05-23 199 if (mid_entry->mid == cur_mid && 88257360605f93 Pavel Shilovsky 2012-05-23 200 mid_entry->mid_state == MID_REQUEST_SUBMITTED) { 88257360605f93 Pavel Shilovsky 2012-05-23 201 /* This mid is in use, try a different one */ 88257360605f93 Pavel Shilovsky 2012-05-23 202 collision = true; 88257360605f93 Pavel Shilovsky 2012-05-23 203 break; 88257360605f93 Pavel Shilovsky 2012-05-23 204 } 88257360605f93 Pavel Shilovsky 2012-05-23 205 } 88257360605f93 Pavel Shilovsky 2012-05-23 206 88257360605f93 Pavel Shilovsky 2012-05-23 207 /* 88257360605f93 Pavel Shilovsky 2012-05-23 208 * if we have more than 32k mids in the list, then something 88257360605f93 Pavel Shilovsky 2012-05-23 209 * is very wrong. Possibly a local user is trying to DoS the 88257360605f93 Pavel Shilovsky 2012-05-23 210 * box by issuing long-running calls and SIGKILL'ing them. If 88257360605f93 Pavel Shilovsky 2012-05-23 211 * we get to 2^16 mids then we're in big trouble as this 88257360605f93 Pavel Shilovsky 2012-05-23 212 * function could loop forever. 88257360605f93 Pavel Shilovsky 2012-05-23 213 * 88257360605f93 Pavel Shilovsky 2012-05-23 214 * Go ahead and assign out the mid in this situation, but force 88257360605f93 Pavel Shilovsky 2012-05-23 215 * an eventual reconnect to clean out the pending_mid_q. 88257360605f93 Pavel Shilovsky 2012-05-23 216 */ 88257360605f93 Pavel Shilovsky 2012-05-23 217 if (num_mids > 32768) 46c2db2a208986 Steve French 2021-11-19 218 reconnect = true; 88257360605f93 Pavel Shilovsky 2012-05-23 219 88257360605f93 Pavel Shilovsky 2012-05-23 220 if (!collision) { 88257360605f93 Pavel Shilovsky 2012-05-23 221 mid = (__u64)cur_mid; 88257360605f93 Pavel Shilovsky 2012-05-23 222 server->CurrentMid = mid; 88257360605f93 Pavel Shilovsky 2012-05-23 223 break; 88257360605f93 Pavel Shilovsky 2012-05-23 224 } 88257360605f93 Pavel Shilovsky 2012-05-23 225 cur_mid++; 88257360605f93 Pavel Shilovsky 2012-05-23 226 } 88257360605f93 Pavel Shilovsky 2012-05-23 227 spin_unlock(&GlobalMid_Lock); 46c2db2a208986 Steve French 2021-11-19 228 46c2db2a208986 Steve French 2021-11-19 @229 if (reconnect) { 46c2db2a208986 Steve French 2021-11-19 230 spin_lock(&cifs_tcp_ses_lock); 46c2db2a208986 Steve French 2021-11-19 231 server->tcpStatus = CifsNeedReconnect; 46c2db2a208986 Steve French 2021-11-19 232 spin_unlock(&cifs_tcp_ses_lock); 46c2db2a208986 Steve French 2021-11-19 233 } 46c2db2a208986 Steve French 2021-11-19 234 88257360605f93 Pavel Shilovsky 2012-05-23 235 return mid; 88257360605f93 Pavel Shilovsky 2012-05-23 236 } 88257360605f93 Pavel Shilovsky 2012-05-23 237 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
