mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
cifs: move large array from stack to heap
This addresses some compile warnings that you can see depending on configuration settings. Signed-off-by: Aurelien Aptel <aaptel@suse.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
ee13919c2e
commit
15bc77f94e
2 changed files with 32 additions and 14 deletions
|
@ -128,24 +128,31 @@ static int __cifs_reconnect_tcon(const struct nls_table *nlsc,
|
|||
int rc;
|
||||
struct dfs_cache_tgt_list tl;
|
||||
struct dfs_cache_tgt_iterator *it = NULL;
|
||||
char tree[MAX_TREE_SIZE + 1];
|
||||
char *tree;
|
||||
const char *tcp_host;
|
||||
size_t tcp_host_len;
|
||||
const char *dfs_host;
|
||||
size_t dfs_host_len;
|
||||
|
||||
tree = kzalloc(MAX_TREE_SIZE, GFP_KERNEL);
|
||||
if (!tree)
|
||||
return -ENOMEM;
|
||||
|
||||
if (tcon->ipc) {
|
||||
snprintf(tree, sizeof(tree), "\\\\%s\\IPC$",
|
||||
snprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$",
|
||||
tcon->ses->server->hostname);
|
||||
return CIFSTCon(0, tcon->ses, tree, tcon, nlsc);
|
||||
rc = CIFSTCon(0, tcon->ses, tree, tcon, nlsc);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!tcon->dfs_path)
|
||||
return CIFSTCon(0, tcon->ses, tcon->treeName, tcon, nlsc);
|
||||
if (!tcon->dfs_path) {
|
||||
rc = CIFSTCon(0, tcon->ses, tcon->treeName, tcon, nlsc);
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = dfs_cache_noreq_find(tcon->dfs_path + 1, NULL, &tl);
|
||||
if (rc)
|
||||
return rc;
|
||||
goto out;
|
||||
|
||||
extract_unc_hostname(tcon->ses->server->hostname, &tcp_host,
|
||||
&tcp_host_len);
|
||||
|
@ -165,7 +172,7 @@ static int __cifs_reconnect_tcon(const struct nls_table *nlsc,
|
|||
continue;
|
||||
}
|
||||
|
||||
snprintf(tree, sizeof(tree), "\\%s", tgt);
|
||||
snprintf(tree, MAX_TREE_SIZE, "\\%s", tgt);
|
||||
|
||||
rc = CIFSTCon(0, tcon->ses, tree, tcon, nlsc);
|
||||
if (!rc)
|
||||
|
@ -182,6 +189,8 @@ static int __cifs_reconnect_tcon(const struct nls_table *nlsc,
|
|||
rc = -ENOENT;
|
||||
}
|
||||
dfs_cache_free_tgts(&tl);
|
||||
out:
|
||||
kfree(tree);
|
||||
return rc;
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -162,24 +162,31 @@ static int __smb2_reconnect(const struct nls_table *nlsc,
|
|||
int rc;
|
||||
struct dfs_cache_tgt_list tl;
|
||||
struct dfs_cache_tgt_iterator *it = NULL;
|
||||
char tree[MAX_TREE_SIZE + 1];
|
||||
char *tree;
|
||||
const char *tcp_host;
|
||||
size_t tcp_host_len;
|
||||
const char *dfs_host;
|
||||
size_t dfs_host_len;
|
||||
|
||||
tree = kzalloc(MAX_TREE_SIZE, GFP_KERNEL);
|
||||
if (!tree)
|
||||
return -ENOMEM;
|
||||
|
||||
if (tcon->ipc) {
|
||||
snprintf(tree, sizeof(tree), "\\\\%s\\IPC$",
|
||||
snprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$",
|
||||
tcon->ses->server->hostname);
|
||||
return SMB2_tcon(0, tcon->ses, tree, tcon, nlsc);
|
||||
rc = SMB2_tcon(0, tcon->ses, tree, tcon, nlsc);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!tcon->dfs_path)
|
||||
return SMB2_tcon(0, tcon->ses, tcon->treeName, tcon, nlsc);
|
||||
if (!tcon->dfs_path) {
|
||||
rc = SMB2_tcon(0, tcon->ses, tcon->treeName, tcon, nlsc);
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = dfs_cache_noreq_find(tcon->dfs_path + 1, NULL, &tl);
|
||||
if (rc)
|
||||
return rc;
|
||||
goto out;
|
||||
|
||||
extract_unc_hostname(tcon->ses->server->hostname, &tcp_host,
|
||||
&tcp_host_len);
|
||||
|
@ -199,7 +206,7 @@ static int __smb2_reconnect(const struct nls_table *nlsc,
|
|||
continue;
|
||||
}
|
||||
|
||||
snprintf(tree, sizeof(tree), "\\%s", tgt);
|
||||
snprintf(tree, MAX_TREE_SIZE, "\\%s", tgt);
|
||||
|
||||
rc = SMB2_tcon(0, tcon->ses, tree, tcon, nlsc);
|
||||
if (!rc)
|
||||
|
@ -216,6 +223,8 @@ static int __smb2_reconnect(const struct nls_table *nlsc,
|
|||
rc = -ENOENT;
|
||||
}
|
||||
dfs_cache_free_tgts(&tl);
|
||||
out:
|
||||
kfree(tree);
|
||||
return rc;
|
||||
}
|
||||
#else
|
||||
|
|
Loading…
Reference in a new issue