diff mbox series

[v4,01/11] cifs: Make extract_hostname function public

Message ID 20201130180257.31787-2-scabrero@suse.de
State New
Headers show
Series Witness protocol support for transparent failover | expand

Commit Message

Samuel Cabrero Nov. 30, 2020, 6:02 p.m. UTC
Move the function to misc.c and give it a public header.

Signed-off-by: Samuel Cabrero <scabrero@suse.de>
---
 fs/cifs/cifsproto.h |  1 +
 fs/cifs/connect.c   | 34 ----------------------------------
 fs/cifs/misc.c      | 32 ++++++++++++++++++++++++++++++++
 3 files changed, 33 insertions(+), 34 deletions(-)

Comments

Steve French Dec. 12, 2020, 3:42 a.m. UTC | #1
I have fixed up (various merge conflicts etc.) and merged the first
three in the series (see attached), as well as added a patch for some
comment cleanups, and a patch to move (following Rafal's suggestion) a
few of the functions from fs/cifs/misc.c to a new file fs/cifs/unc.c

The first three in the series are very low risk and can be merged
independent of the others to make review/cleanup of the final patches
easier.  I will fixup patch 4 (which add a mount parm and thus
requires rebasing on Ronnie's mount API series).  Am planning
reviewing the final seven in the series, let me know if changes needed
to the remaining (ie patches 5 through 11).


On Mon, Nov 30, 2020 at 12:04 PM Samuel Cabrero <scabrero@suse.de> wrote:
>
> Move the function to misc.c and give it a public header.
>
> Signed-off-by: Samuel Cabrero <scabrero@suse.de>
> ---
>  fs/cifs/cifsproto.h |  1 +
>  fs/cifs/connect.c   | 34 ----------------------------------
>  fs/cifs/misc.c      | 32 ++++++++++++++++++++++++++++++++
>  3 files changed, 33 insertions(+), 34 deletions(-)
>
> diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
> index 24c6f36177ba..d716e81d86fa 100644
> --- a/fs/cifs/cifsproto.h
> +++ b/fs/cifs/cifsproto.h
> @@ -620,6 +620,7 @@ int smb2_parse_query_directory(struct cifs_tcon *tcon, struct kvec *rsp_iov,
>  struct super_block *cifs_get_tcp_super(struct TCP_Server_Info *server);
>  void cifs_put_tcp_super(struct super_block *sb);
>  int update_super_prepath(struct cifs_tcon *tcon, char *prefix);
> +char *extract_hostname(const char *unc);
>
>  #ifdef CONFIG_CIFS_DFS_UPCALL
>  static inline int get_dfs_path(const unsigned int xid, struct cifs_ses *ses,
> diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
> index 28c1459fb0fc..a938371af6ef 100644
> --- a/fs/cifs/connect.c
> +++ b/fs/cifs/connect.c
> @@ -284,7 +284,6 @@ static int ip_connect(struct TCP_Server_Info *server);
>  static int generic_ip_connect(struct TCP_Server_Info *server);
>  static void tlink_rb_insert(struct rb_root *root, struct tcon_link *new_tlink);
>  static void cifs_prune_tlinks(struct work_struct *work);
> -static char *extract_hostname(const char *unc);
>
>  /*
>   * Resolve hostname and set ip addr in tcp ses. Useful for hostnames that may
> @@ -1232,39 +1231,6 @@ cifs_demultiplex_thread(void *p)
>         module_put_and_exit(0);
>  }
>
> -/* extract the host portion of the UNC string */
> -static char *
> -extract_hostname(const char *unc)
> -{
> -       const char *src;
> -       char *dst, *delim;
> -       unsigned int len;
> -
> -       /* skip double chars at beginning of string */
> -       /* BB: check validity of these bytes? */
> -       if (strlen(unc) < 3)
> -               return ERR_PTR(-EINVAL);
> -       for (src = unc; *src && *src == '\\'; src++)
> -               ;
> -       if (!*src)
> -               return ERR_PTR(-EINVAL);
> -
> -       /* delimiter between hostname and sharename is always '\\' now */
> -       delim = strchr(src, '\\');
> -       if (!delim)
> -               return ERR_PTR(-EINVAL);
> -
> -       len = delim - src;
> -       dst = kmalloc((len + 1), GFP_KERNEL);
> -       if (dst == NULL)
> -               return ERR_PTR(-ENOMEM);
> -
> -       memcpy(dst, src, len);
> -       dst[len] = '\0';
> -
> -       return dst;
> -}
> -
>  static int get_option_ul(substring_t args[], unsigned long *option)
>  {
>         int rc;
> diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
> index 1c14cf01dbef..3d5cc25c167f 100644
> --- a/fs/cifs/misc.c
> +++ b/fs/cifs/misc.c
> @@ -1195,3 +1195,35 @@ int update_super_prepath(struct cifs_tcon *tcon, char *prefix)
>         cifs_put_tcon_super(sb);
>         return rc;
>  }
> +
> +/* extract the host portion of the UNC string */
> +char *extract_hostname(const char *unc)
> +{
> +       const char *src;
> +       char *dst, *delim;
> +       unsigned int len;
> +
> +       /* skip double chars at beginning of string */
> +       /* BB: check validity of these bytes? */
> +       if (strlen(unc) < 3)
> +               return ERR_PTR(-EINVAL);
> +       for (src = unc; *src && *src == '\\'; src++)
> +               ;
> +       if (!*src)
> +               return ERR_PTR(-EINVAL);
> +
> +       /* delimiter between hostname and sharename is always '\\' now */
> +       delim = strchr(src, '\\');
> +       if (!delim)
> +               return ERR_PTR(-EINVAL);
> +
> +       len = delim - src;
> +       dst = kmalloc((len + 1), GFP_KERNEL);
> +       if (dst == NULL)
> +               return ERR_PTR(-ENOMEM);
> +
> +       memcpy(dst, src, len);
> +       dst[len] = '\0';
> +
> +       return dst;
> +}
> --
> 2.29.2
>


--
Thanks,

Steve
diff mbox series

Patch

diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 24c6f36177ba..d716e81d86fa 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -620,6 +620,7 @@  int smb2_parse_query_directory(struct cifs_tcon *tcon, struct kvec *rsp_iov,
 struct super_block *cifs_get_tcp_super(struct TCP_Server_Info *server);
 void cifs_put_tcp_super(struct super_block *sb);
 int update_super_prepath(struct cifs_tcon *tcon, char *prefix);
+char *extract_hostname(const char *unc);
 
 #ifdef CONFIG_CIFS_DFS_UPCALL
 static inline int get_dfs_path(const unsigned int xid, struct cifs_ses *ses,
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 28c1459fb0fc..a938371af6ef 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -284,7 +284,6 @@  static int ip_connect(struct TCP_Server_Info *server);
 static int generic_ip_connect(struct TCP_Server_Info *server);
 static void tlink_rb_insert(struct rb_root *root, struct tcon_link *new_tlink);
 static void cifs_prune_tlinks(struct work_struct *work);
-static char *extract_hostname(const char *unc);
 
 /*
  * Resolve hostname and set ip addr in tcp ses. Useful for hostnames that may
@@ -1232,39 +1231,6 @@  cifs_demultiplex_thread(void *p)
 	module_put_and_exit(0);
 }
 
-/* extract the host portion of the UNC string */
-static char *
-extract_hostname(const char *unc)
-{
-	const char *src;
-	char *dst, *delim;
-	unsigned int len;
-
-	/* skip double chars at beginning of string */
-	/* BB: check validity of these bytes? */
-	if (strlen(unc) < 3)
-		return ERR_PTR(-EINVAL);
-	for (src = unc; *src && *src == '\\'; src++)
-		;
-	if (!*src)
-		return ERR_PTR(-EINVAL);
-
-	/* delimiter between hostname and sharename is always '\\' now */
-	delim = strchr(src, '\\');
-	if (!delim)
-		return ERR_PTR(-EINVAL);
-
-	len = delim - src;
-	dst = kmalloc((len + 1), GFP_KERNEL);
-	if (dst == NULL)
-		return ERR_PTR(-ENOMEM);
-
-	memcpy(dst, src, len);
-	dst[len] = '\0';
-
-	return dst;
-}
-
 static int get_option_ul(substring_t args[], unsigned long *option)
 {
 	int rc;
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index 1c14cf01dbef..3d5cc25c167f 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -1195,3 +1195,35 @@  int update_super_prepath(struct cifs_tcon *tcon, char *prefix)
 	cifs_put_tcon_super(sb);
 	return rc;
 }
+
+/* extract the host portion of the UNC string */
+char *extract_hostname(const char *unc)
+{
+	const char *src;
+	char *dst, *delim;
+	unsigned int len;
+
+	/* skip double chars at beginning of string */
+	/* BB: check validity of these bytes? */
+	if (strlen(unc) < 3)
+		return ERR_PTR(-EINVAL);
+	for (src = unc; *src && *src == '\\'; src++)
+		;
+	if (!*src)
+		return ERR_PTR(-EINVAL);
+
+	/* delimiter between hostname and sharename is always '\\' now */
+	delim = strchr(src, '\\');
+	if (!delim)
+		return ERR_PTR(-EINVAL);
+
+	len = delim - src;
+	dst = kmalloc((len + 1), GFP_KERNEL);
+	if (dst == NULL)
+		return ERR_PTR(-ENOMEM);
+
+	memcpy(dst, src, len);
+	dst[len] = '\0';
+
+	return dst;
+}