@@ -75,13 +75,11 @@ static void refresh_cache_worker(struct work_struct *work);
static DECLARE_DELAYED_WORK(refresh_task, refresh_cache_worker);
-static inline bool is_path_valid(const char *path)
+static int get_normalized_path(const char *path, char **npath)
{
- return path && (strchr(path + 1, '\\') || strchr(path + 1, '/'));
-}
+ if (!path || strlen(path) < 3 || (*path != '\\' && *path != '/'))
+ return -EINVAL;
-static inline int get_normalized_path(const char *path, char **npath)
-{
if (*path == '\\') {
*npath = (char *)path;
} else {
@@ -828,9 +826,6 @@ int dfs_cache_find(const unsigned int xid, struct cifs_ses *ses,
char *npath;
struct cache_entry *ce;
- if (unlikely(!is_path_valid(path)))
- return -EINVAL;
-
rc = get_normalized_path(path, &npath);
if (rc)
return rc;
@@ -875,9 +870,6 @@ int dfs_cache_noreq_find(const char *path, struct dfs_info3_param *ref,
char *npath;
struct cache_entry *ce;
- if (unlikely(!is_path_valid(path)))
- return -EINVAL;
-
rc = get_normalized_path(path, &npath);
if (rc)
return rc;
@@ -929,9 +921,6 @@ int dfs_cache_update_tgthint(const unsigned int xid, struct cifs_ses *ses,
struct cache_entry *ce;
struct cache_dfs_tgt *t;
- if (unlikely(!is_path_valid(path)))
- return -EINVAL;
-
rc = get_normalized_path(path, &npath);
if (rc)
return rc;
@@ -989,7 +978,7 @@ int dfs_cache_noreq_update_tgthint(const char *path,
struct cache_entry *ce;
struct cache_dfs_tgt *t;
- if (unlikely(!is_path_valid(path)) || !it)
+ if (!it)
return -EINVAL;
rc = get_normalized_path(path, &npath);
@@ -1049,8 +1038,6 @@ int dfs_cache_get_tgt_referral(const char *path,
if (!it || !ref)
return -EINVAL;
- if (unlikely(!is_path_valid(path)))
- return -EINVAL;
rc = get_normalized_path(path, &npath);
if (rc)
Just do the trivial path validation in get_normalized_path(). Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz> --- fs/cifs/dfs_cache.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-)