mirror of https://gitee.com/openkylin/linux.git
cifs: constify get_normalized_path() properly
As it is, it takes const char * and, in some cases, stores it in caller's variable that is plain char *. Fortunately, none of the callers actually proceeded to modify the string via now-non-const alias, but that's trouble waiting to happen. It's easy to do properly, anyway... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
8d76722355
commit
9cfdb1c12b
|
@ -81,23 +81,24 @@ static void refresh_cache_worker(struct work_struct *work);
|
|||
|
||||
static DECLARE_DELAYED_WORK(refresh_task, refresh_cache_worker);
|
||||
|
||||
static int get_normalized_path(const char *path, char **npath)
|
||||
static int get_normalized_path(const char *path, const char **npath)
|
||||
{
|
||||
if (!path || strlen(path) < 3 || (*path != '\\' && *path != '/'))
|
||||
return -EINVAL;
|
||||
|
||||
if (*path == '\\') {
|
||||
*npath = (char *)path;
|
||||
*npath = path;
|
||||
} else {
|
||||
*npath = kstrdup(path, GFP_KERNEL);
|
||||
if (!*npath)
|
||||
char *s = kstrdup(path, GFP_KERNEL);
|
||||
if (!s)
|
||||
return -ENOMEM;
|
||||
convert_delimiter(*npath, '\\');
|
||||
convert_delimiter(s, '\\');
|
||||
*npath = s;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void free_normalized_path(const char *path, char *npath)
|
||||
static inline void free_normalized_path(const char *path, const char *npath)
|
||||
{
|
||||
if (path != npath)
|
||||
kfree(npath);
|
||||
|
@ -882,7 +883,7 @@ int dfs_cache_find(const unsigned int xid, struct cifs_ses *ses,
|
|||
struct dfs_cache_tgt_list *tgt_list)
|
||||
{
|
||||
int rc;
|
||||
char *npath;
|
||||
const char *npath;
|
||||
struct cache_entry *ce;
|
||||
|
||||
rc = get_normalized_path(path, &npath);
|
||||
|
@ -936,7 +937,7 @@ int dfs_cache_noreq_find(const char *path, struct dfs_info3_param *ref,
|
|||
struct dfs_cache_tgt_list *tgt_list)
|
||||
{
|
||||
int rc;
|
||||
char *npath;
|
||||
const char *npath;
|
||||
struct cache_entry *ce;
|
||||
|
||||
rc = get_normalized_path(path, &npath);
|
||||
|
@ -991,7 +992,7 @@ int dfs_cache_update_tgthint(const unsigned int xid, struct cifs_ses *ses,
|
|||
const struct dfs_cache_tgt_iterator *it)
|
||||
{
|
||||
int rc;
|
||||
char *npath;
|
||||
const char *npath;
|
||||
struct cache_entry *ce;
|
||||
struct cache_dfs_tgt *t;
|
||||
|
||||
|
@ -1053,7 +1054,7 @@ int dfs_cache_noreq_update_tgthint(const char *path,
|
|||
const struct dfs_cache_tgt_iterator *it)
|
||||
{
|
||||
int rc;
|
||||
char *npath;
|
||||
const char *npath;
|
||||
struct cache_entry *ce;
|
||||
struct cache_dfs_tgt *t;
|
||||
|
||||
|
@ -1111,7 +1112,7 @@ int dfs_cache_get_tgt_referral(const char *path,
|
|||
struct dfs_info3_param *ref)
|
||||
{
|
||||
int rc;
|
||||
char *npath;
|
||||
const char *npath;
|
||||
struct cache_entry *ce;
|
||||
|
||||
if (!it || !ref)
|
||||
|
@ -1484,7 +1485,7 @@ static int refresh_tcon(struct vol_info *vi, struct cifs_tcon *tcon)
|
|||
{
|
||||
int rc = 0;
|
||||
unsigned int xid;
|
||||
char *path, *npath;
|
||||
const char *path, *npath;
|
||||
struct cache_entry *ce;
|
||||
struct cifs_ses *root_ses = NULL, *ses;
|
||||
struct dfs_info3_param *refs = NULL;
|
||||
|
|
Loading…
Reference in New Issue