}
 #endif
 
+#ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
 /*
  * Issue a TREE_CONNECT request.
  */
                else
                        tcon->Flags = 0;
                cifs_dbg(FYI, "Tcon flags: 0x%x\n", tcon->Flags);
-       }
 
+               /*
+                * reset_cifs_unix_caps calls QFSInfo which requires
+                * need_reconnect to be false, but we would not need to call
+                * reset_caps if this were not a reconnect case so must check
+                * need_reconnect flag here.  The caller will also clear
+                * need_reconnect when tcon was successful but needed to be
+                * cleared earlier in the case of unix extensions reconnect
+                */
+               if (tcon->need_reconnect && tcon->unix_ext) {
+                       cifs_dbg(FYI, "resetting caps for %s\n", tcon->tree_name);
+                       tcon->need_reconnect = false;
+                       reset_cifs_unix_caps(xid, tcon, NULL, NULL);
+               }
+       }
        cifs_buf_release(smb_buffer);
        return rc;
 }
+#endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
 
 static void delayed_free(struct rcu_head *p)
 {