Skip to content

Commit

Permalink
cifs: populate empty hostnames for extra channels
Browse files Browse the repository at this point in the history
Currently, the secondary channels of a multichannel session
also get hostname populated based on the info in primary channel.
However, this will end up with a wrong resolution of hostname to
IP address during reconnect.

This change fixes this by not populating hostname info for all
secondary channels.

Fixes: 5112d80 ("cifs: populate server_hostname for extra channels")
Cc: stable@vger.kernel.org
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
  • Loading branch information
sprasad-microsoft authored and Steve French committed Jun 10, 2022
1 parent 8ea2182 commit 4c14d70
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
4 changes: 4 additions & 0 deletions fs/cifs/connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ static int reconn_set_ipaddr_from_hostname(struct TCP_Server_Info *server)
if (!server->hostname)
return -EINVAL;

/* if server hostname isn't populated, there's nothing to do here */
if (server->hostname[0] == '\0')
return 0;

len = strlen(server->hostname) + 3;

unc = kmalloc(len, GFP_KERNEL);
Expand Down
5 changes: 4 additions & 1 deletion fs/cifs/sess.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,10 @@ cifs_ses_add_channel(struct cifs_sb_info *cifs_sb, struct cifs_ses *ses,
/* Auth */
ctx.domainauto = ses->domainAuto;
ctx.domainname = ses->domainName;
ctx.server_hostname = ses->server->hostname;

/* no hostname for extra channels */
ctx.server_hostname = "";

ctx.username = ses->user_name;
ctx.password = ses->password;
ctx.sectype = ses->sectype;
Expand Down

0 comments on commit 4c14d70

Please sign in to comment.