cifs: constify get_normalized_path() properly
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 18 Mar 2021 05:03:34 +0000 (01:03 -0400)
committerSteve French <stfrench@microsoft.com>
Sun, 25 Apr 2021 21:28:23 +0000 (16:28 -0500)
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>
fs/cifs/dfs_cache.c

index e4617cc..b1fa30f 100644 (file)
@@ -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;