| From b4f60a053a2534c3e510ba0c1f8727566adf8317 Mon Sep 17 00:00:00 2001 |
| From: Shyam Prasad N <sprasad@microsoft.com> |
| Date: Mon, 2 Jun 2025 22:37:16 +0530 |
| Subject: cifs: dns resolution is needed only for primary channel |
| |
| From: Shyam Prasad N <sprasad@microsoft.com> |
| |
| commit b4f60a053a2534c3e510ba0c1f8727566adf8317 upstream. |
| |
| When calling cifs_reconnect, before the connection to the |
| server is reestablished, the code today does a DNS resolution and |
| updates server->dstaddr. |
| |
| However, this is not necessary for secondary channels. Secondary |
| channels use the interface list returned by the server to decide |
| which address to connect to. And that happens after tcon is reconnected |
| and server interfaces are requested. |
| |
| Signed-off-by: Shyam Prasad N <sprasad@microsoft.com> |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Steve French <stfrench@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/smb/client/connect.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/fs/smb/client/connect.c |
| +++ b/fs/smb/client/connect.c |
| @@ -408,7 +408,8 @@ static int __cifs_reconnect(struct TCP_S |
| try_to_freeze(); |
| cifs_server_lock(server); |
| |
| - if (!cifs_swn_set_server_dstaddr(server)) { |
| + if (!cifs_swn_set_server_dstaddr(server) && |
| + !SERVER_IS_CHAN(server)) { |
| /* resolve the hostname again to make sure that IP address is up-to-date */ |
| rc = reconn_set_ipaddr_from_hostname(server); |
| cifs_dbg(FYI, "%s: reconn_set_ipaddr_from_hostname: rc=%d\n", __func__, rc); |