This is a note to let you know that I've just added the patch titled cifs: Merge is_path_valid() into get_normalized_path() to the 5.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: cifs-merge-is_path_valid-into-get_normalized_path.patch and it can be found in the queue-5.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From stable-owner@xxxxxxxxxxxxxxx Fri Jun 23 23:35:59 2023 From: Rishabh Bhatnagar <risbhat@xxxxxxxxxx> Date: Fri, 23 Jun 2023 21:34:05 +0000 Subject: cifs: Merge is_path_valid() into get_normalized_path() To: <gregkh@xxxxxxxxxxxxxxxxxxx>, <pc@xxxxxx> Cc: <stable@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>, <linux-cifs@xxxxxxxxxxxxxxx>, Aurelien Aptel <aaptel@xxxxxxxx>, Steve French <stfrench@xxxxxxxxxxxxx>, Rishabh Bhatnagar <risbhat@xxxxxxxxxx> Message-ID: <20230623213406.5596-5-risbhat@xxxxxxxxxx> From: "Paulo Alcantara (SUSE)" <pc@xxxxxx> commit ff2f7fc08268f266372c30a815349749e8499eb5 upstream. Just do the trivial path validation in get_normalized_path(). Signed-off-by: Paulo Alcantara (SUSE) <pc@xxxxxx> Reviewed-by: Aurelien Aptel <aaptel@xxxxxxxx> Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx> Signed-off-by: Rishabh Bhatnagar <risbhat@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- fs/cifs/dfs_cache.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) --- a/fs/cifs/dfs_cache.c +++ b/fs/cifs/dfs_cache.c @@ -75,13 +75,11 @@ static void refresh_cache_worker(struct 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 xi 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 *pat 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 unsig 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 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 cha if (!it || !ref) return -EINVAL; - if (unlikely(!is_path_valid(path))) - return -EINVAL; rc = get_normalized_path(path, &npath); if (rc) Patches currently in stable-queue which might be from stable-owner@xxxxxxxxxxxxxxx are queue-5.4/cifs-clean-up-dfs-referral-cache.patch queue-5.4/cifs-merge-is_path_valid-into-get_normalized_path.patch queue-5.4/cifs-introduce-helpers-for-finding-tcp-connection.patch queue-5.4/cifs-get-rid-of-kstrdup_const-d-paths.patch queue-5.4/cifs-fix-potential-deadlock-when-updating-vol-in-cifs_reconnect.patch