|
Paulo Alcantara |
9b0633 |
From: Shyam Prasad N <sprasad@microsoft.com>
|
|
Paulo Alcantara |
9b0633 |
Date: Fri, 10 Feb 2023 17:41:17 +0000
|
|
Paulo Alcantara |
9b0633 |
Subject: [PATCH] cifs: update ip_addr for ses only for primary chan setup
|
|
Paulo Alcantara |
9b0633 |
Git-commit: e77978de4765229e09c8fabcf4f8419ff367317f
|
|
Paulo Alcantara |
9b0633 |
References: bsc#1193629
|
|
Paulo Alcantara |
9b0633 |
Patch-mainline: v6.3-rc1
|
|
Paulo Alcantara |
9b0633 |
|
|
Paulo Alcantara |
9b0633 |
We update ses->ip_addr whenever we do a session setup.
|
|
Paulo Alcantara |
9b0633 |
But this should happen only for primary channel in mchan
|
|
Paulo Alcantara |
9b0633 |
scenario.
|
|
Paulo Alcantara |
9b0633 |
|
|
Paulo Alcantara |
9b0633 |
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
|
|
Paulo Alcantara |
9b0633 |
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
|
|
Paulo Alcantara |
9b0633 |
Signed-off-by: Steve French <stfrench@microsoft.com>
|
|
Paulo Alcantara |
9b0633 |
Acked-by: Paulo Alcantara <palcantara@suse.de>
|
|
Paulo Alcantara |
9b0633 |
---
|
|
Paulo Alcantara |
9b0633 |
fs/cifs/connect.c | 18 +++++++++++-------
|
|
Paulo Alcantara |
9b0633 |
1 file changed, 11 insertions(+), 7 deletions(-)
|
|
Paulo Alcantara |
9b0633 |
|
|
Paulo Alcantara |
9b0633 |
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
|
|
Paulo Alcantara |
9b0633 |
index 6831eb8cea7c..61872db5d775 100644
|
|
Paulo Alcantara |
9b0633 |
--- a/fs/cifs/connect.c
|
|
Paulo Alcantara |
9b0633 |
+++ b/fs/cifs/connect.c
|
|
Paulo Alcantara |
9b0633 |
@@ -3708,16 +3708,12 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
|
|
Paulo Alcantara |
9b0633 |
struct nls_table *nls_info)
|
|
Paulo Alcantara |
9b0633 |
{
|
|
Paulo Alcantara |
9b0633 |
int rc = -ENOSYS;
|
|
Paulo Alcantara |
9b0633 |
- struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr;
|
|
Paulo Alcantara |
9b0633 |
- struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr;
|
|
Paulo Alcantara |
9b0633 |
+ struct TCP_Server_Info *pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server;
|
|
Paulo Alcantara |
9b0633 |
+ struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&pserver->dstaddr;
|
|
Paulo Alcantara |
9b0633 |
+ struct sockaddr_in *addr = (struct sockaddr_in *)&pserver->dstaddr;
|
|
Paulo Alcantara |
9b0633 |
bool is_binding = false;
|
|
Paulo Alcantara |
9b0633 |
|
|
Paulo Alcantara |
9b0633 |
spin_lock(&ses->ses_lock);
|
|
Paulo Alcantara |
9b0633 |
- if (server->dstaddr.ss_family == AF_INET6)
|
|
Paulo Alcantara |
9b0633 |
- scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI6", &addr6->sin6_addr);
|
|
Paulo Alcantara |
9b0633 |
- else
|
|
Paulo Alcantara |
9b0633 |
- scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI4", &addr->sin_addr);
|
|
Paulo Alcantara |
9b0633 |
-
|
|
Paulo Alcantara |
9b0633 |
if (ses->ses_status != SES_GOOD &&
|
|
Paulo Alcantara |
9b0633 |
ses->ses_status != SES_NEW &&
|
|
Paulo Alcantara |
9b0633 |
ses->ses_status != SES_NEED_RECON) {
|
|
Paulo Alcantara |
9b0633 |
@@ -3741,6 +3737,14 @@ cifs_setup_session(const unsigned int xid, struct cifs_ses *ses,
|
|
Paulo Alcantara |
9b0633 |
ses->ses_status = SES_IN_SETUP;
|
|
Paulo Alcantara |
9b0633 |
spin_unlock(&ses->ses_lock);
|
|
Paulo Alcantara |
9b0633 |
|
|
Paulo Alcantara |
9b0633 |
+ /* update ses ip_addr only for primary chan */
|
|
Paulo Alcantara |
9b0633 |
+ if (server == pserver) {
|
|
Paulo Alcantara |
9b0633 |
+ if (server->dstaddr.ss_family == AF_INET6)
|
|
Paulo Alcantara |
9b0633 |
+ scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI6", &addr6->sin6_addr);
|
|
Paulo Alcantara |
9b0633 |
+ else
|
|
Paulo Alcantara |
9b0633 |
+ scnprintf(ses->ip_addr, sizeof(ses->ip_addr), "%pI4", &addr->sin_addr);
|
|
Paulo Alcantara |
9b0633 |
+ }
|
|
Paulo Alcantara |
9b0633 |
+
|
|
Paulo Alcantara |
9b0633 |
if (!is_binding) {
|
|
Paulo Alcantara |
9b0633 |
ses->capabilities = server->capabilities;
|
|
Paulo Alcantara |
9b0633 |
if (!linuxExtEnabled)
|
|
Paulo Alcantara |
9b0633 |
--
|
|
Paulo Alcantara |
9b0633 |
2.39.2
|
|
Paulo Alcantara |
9b0633 |
|
|
Paulo Alcantara |
9b0633 |
|