]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cifs: handle empty list of targets in cifs_reconnect()
authorPaulo Alcantara <pc@cjr.nz>
Tue, 21 Jul 2020 12:36:41 +0000 (09:36 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Jun 2023 08:59:59 +0000 (10:59 +0200)
commit a52930353eaf443489a350a135c5525a4acbbf56 upstream.

In case there were no cached DFS referrals in
reconn_setup_dfs_targets(), set cifs_sb to NULL prior to calling
reconn_set_next_dfs_target() so it would not try to access an empty
tgt_list.

Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Rishabh Bhatnagar <risbhat@amazon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/cifs/connect.c

index b5cd3dc479ce5fb79339a0f0f2eb0e8142f240ea..d8d9d906154407b03f3b0d2809f7c891b133f50b 100644 (file)
@@ -513,11 +513,13 @@ cifs_reconnect(struct TCP_Server_Info *server)
                sb = NULL;
        } else {
                cifs_sb = CIFS_SB(sb);
-
                rc = reconn_setup_dfs_targets(cifs_sb, &tgt_list);
-               if (rc && (rc != -EOPNOTSUPP)) {
-                       cifs_server_dbg(VFS, "%s: no target servers for DFS failover\n",
-                                __func__);
+               if (rc) {
+                       cifs_sb = NULL;
+                       if (rc != -EOPNOTSUPP) {
+                               cifs_server_dbg(VFS, "%s: no target servers for DFS failover\n",
+                                               __func__);
+                       }
                } else {
                        server->nr_targets = dfs_cache_get_nr_tgts(&tgt_list);
                }