Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b20d672 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Steve French
Browse files

[CIFS] cifs_find_tcp_session cleanup



This patch cleans up cifs_find_tcp_session so it become
less indented. Also the error of skipping IPv6 matched
addresses fixed.

Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 5bb7ff79
Loading
Loading
Loading
Loading
+26 −25
Original line number Diff line number Diff line
@@ -1323,37 +1323,38 @@ cifs_find_tcp_session(struct in_addr *target_ip_addr,
{
	struct list_head *tmp;
	struct cifsSesInfo *ses;

	*psrvTcp = NULL;
	read_lock(&GlobalSMBSeslock);

	read_lock(&GlobalSMBSeslock);
	list_for_each(tmp, &GlobalSMBSessionList) {
		ses = list_entry(tmp, struct cifsSesInfo, cifsSessionList);
		if (ses->server) {
			if ((target_ip_addr &&
				(ses->server->addr.sockAddr.sin_addr.s_addr
				  == target_ip_addr->s_addr)) || (target_ip6_addr
				&& memcmp(&ses->server->addr.sockAddr6.sin6_addr,
					target_ip6_addr, sizeof(*target_ip6_addr)))) {
				/* BB lock server and tcp session and increment
				      use count here?? */
		if (!ses->server)
			continue;

		if (target_ip_addr &&
		    ses->server->addr.sockAddr.sin_addr.s_addr != target_ip_addr->s_addr)
				continue;
		else if (target_ip6_addr &&
			 memcmp(&ses->server->addr.sockAddr6.sin6_addr,
				target_ip6_addr, sizeof(*target_ip6_addr)))
				continue;
		/* BB lock server and tcp session and increment use count here?? */

		/* found a match on the TCP session */
		*psrvTcp = ses->server;

		/* BB check if reconnection needed */
				if (strncmp
				    (ses->userName, userName,
				     MAX_USERNAME_SIZE) == 0){
		if (strncmp(ses->userName, userName, MAX_USERNAME_SIZE) == 0) {
			read_unlock(&GlobalSMBSeslock);
			/* Found exact match on both TCP and
			   SMB sessions */
			return ses;
		}
			}
		}
		/* else tcp and smb sessions need reconnection */
	}
	read_unlock(&GlobalSMBSeslock);

	return NULL;
}