return true;
 }
 
+static int match_server(struct TCP_Server_Info *server, struct sockaddr *addr,
+                        struct smb_vol *vol)
+{
+       if (!net_eq(cifs_net_ns(server), current->nsproxy->net_ns))
+               return 0;
+
+       if (!match_address(server, addr,
+                          (struct sockaddr *)&vol->srcaddr))
+               return 0;
+
+       if (!match_port(server, addr))
+               return 0;
+
+       if (!match_security(server, vol))
+               return 0;
+
+       return 1;
+}
+
 static struct TCP_Server_Info *
 cifs_find_tcp_session(struct sockaddr *addr, struct smb_vol *vol)
 {
 
        spin_lock(&cifs_tcp_ses_lock);
        list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) {
-               if (!net_eq(cifs_net_ns(server), current->nsproxy->net_ns))
-                       continue;
-
-               if (!match_address(server, addr,
-                                  (struct sockaddr *)&vol->srcaddr))
-                       continue;
-
-               if (!match_port(server, addr))
-                       continue;
-
-               if (!match_security(server, vol))
+               if (!match_server(server, addr, vol))
                        continue;
 
                ++server->srv_count;
        return ERR_PTR(rc);
 }
 
+static int match_session(struct cifsSesInfo *ses, struct smb_vol *vol)
+{
+       switch (ses->server->secType) {
+       case Kerberos:
+               if (vol->cred_uid != ses->cred_uid)
+                       return 0;
+               break;
+       default:
+               /* anything else takes username/password */
+               if (ses->user_name == NULL)
+                       return 0;
+               if (strncmp(ses->user_name, vol->username,
+                           MAX_USERNAME_SIZE))
+                       return 0;
+               if (strlen(vol->username) != 0 &&
+                   ses->password != NULL &&
+                   strncmp(ses->password,
+                           vol->password ? vol->password : "",
+                           MAX_PASSWORD_SIZE))
+                       return 0;
+       }
+       return 1;
+}
+
 static struct cifsSesInfo *
 cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb_vol *vol)
 {
 
        spin_lock(&cifs_tcp_ses_lock);
        list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
-               switch (server->secType) {
-               case Kerberos:
-                       if (vol->cred_uid != ses->cred_uid)
-                               continue;
-                       break;
-               default:
-                       /* anything else takes username/password */
-                       if (ses->user_name == NULL)
-                               continue;
-                       if (strncmp(ses->user_name, vol->username,
-                                   MAX_USERNAME_SIZE))
-                               continue;
-                       if (strlen(vol->username) != 0 &&
-                           ses->password != NULL &&
-                           strncmp(ses->password,
-                                   vol->password ? vol->password : "",
-                                   MAX_PASSWORD_SIZE))
-                               continue;
-               }
+               if (!match_session(ses, vol))
+                       continue;
                ++ses->ses_count;
                spin_unlock(&cifs_tcp_ses_lock);
                return ses;
        return ERR_PTR(rc);
 }
 
+static int match_tcon(struct cifsTconInfo *tcon, const char *unc)
+{
+       if (tcon->tidStatus == CifsExiting)
+               return 0;
+       if (strncmp(tcon->treeName, unc, MAX_TREE_SIZE))
+               return 0;
+       return 1;
+}
+
 static struct cifsTconInfo *
 cifs_find_tcon(struct cifsSesInfo *ses, const char *unc)
 {
        spin_lock(&cifs_tcp_ses_lock);
        list_for_each(tmp, &ses->tcon_list) {
                tcon = list_entry(tmp, struct cifsTconInfo, tcon_list);
-               if (tcon->tidStatus == CifsExiting)
+               if (!match_tcon(tcon, unc))
                        continue;
-               if (strncmp(tcon->treeName, unc, MAX_TREE_SIZE))
-                       continue;
-
                ++tcon->tc_count;
                spin_unlock(&cifs_tcp_ses_lock);
                return tcon;