diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 1f3345d..c00159c 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1399,13 +1399,15 @@ cifs_find_tcp_session(struct sockaddr_storage *addr)
 
 		if (addr->ss_family == AF_INET &&
 		    (addr4->sin_addr.s_addr !=
-		     server->addr.sockAddr.sin_addr.s_addr))
+		     server->addr.sockAddr.sin_addr.s_addr ||
+		     addr4->sin_port != server->addr.sockAddr.sin_port))
 			continue;
 		else if (addr->ss_family == AF_INET6 &&
 			 (!ipv6_addr_equal(&server->addr.sockAddr6.sin6_addr,
 					   &addr6->sin6_addr) ||
 			  server->addr.sockAddr6.sin6_scope_id !=
-					   addr6->sin6_scope_id))
+					   addr6->sin6_scope_id ||
+			  server->addr.sockAddr6.sin6_port != addr6->sin6_port))
 			continue;
 
 		++server->srv_count;
