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)
committerSteve French <stfrench@microsoft.com>
Sun, 2 Aug 2020 23:00:26 +0000 (18:00 -0500)
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>
fs/cifs/connect.c

index 21a4685..78e6460 100644 (file)
@@ -470,11 +470,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);
                }