cifs: cleanup misc.c
authorSteve French <stfrench@microsoft.com>
Sat, 12 Dec 2020 02:22:04 +0000 (20:22 -0600)
committerSteve French <stfrench@microsoft.com>
Mon, 14 Dec 2020 15:16:22 +0000 (09:16 -0600)
misc.c was getting a little large, move two of the UNC parsing relating
functions to a new C file unc.c which makes the coding of the
upcoming witness protocol patch series a little cleaner as well.

Suggested-by: Rafal Szczesniak <rafal@elbingbrewery.org>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/Makefile
fs/cifs/misc.c
fs/cifs/unc.c [new file with mode: 0644]

index cd17d0e50f2a193673ac80b05524d0a4300fe597..848ebad6af7dbbe375ebeaa8c015a2188afd9222 100644 (file)
@@ -8,7 +8,7 @@ obj-$(CONFIG_CIFS) += cifs.o
 cifs-y := trace.o cifsfs.o cifssmb.o cifs_debug.o connect.o dir.o file.o \
          inode.o link.o misc.o netmisc.o smbencrypt.o transport.o asn1.o \
          cifs_unicode.o nterr.o cifsencrypt.o \
-         readdir.o ioctl.o sess.o export.o smb1ops.o winucase.o \
+         readdir.o ioctl.o sess.o export.o smb1ops.o unc.o winucase.o \
          smb2ops.o smb2maperror.o smb2transport.o \
          smb2misc.o smb2pdu.o smb2inode.o smb2file.o cifsacl.o fs_context.o
 
index f0a1c24751b21a68d95e234ec02f52f6e420c693..1c14cf01dbef064594778feec796dc02c3dc7f7d 100644 (file)
@@ -1195,59 +1195,3 @@ out:
        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;
-}
-
-char *extract_sharename(const char *unc)
-{
-       const char *src;
-       char *delim, *dst;
-       int len;
-
-       /* skip double chars at the beginning */
-       src = unc + 2;
-
-       /* share name is always preceded by '\\' now */
-       delim = strchr(src, '\\');
-       if (!delim)
-               return ERR_PTR(-EINVAL);
-       delim++;
-       len = strlen(delim);
-
-       /* caller has to free the memory */
-       dst = kstrndup(delim, len, GFP_KERNEL);
-       if (!dst)
-               return ERR_PTR(-ENOMEM);
-
-       return dst;
-}
diff --git a/fs/cifs/unc.c b/fs/cifs/unc.c
new file mode 100644 (file)
index 0000000..2c5665f
--- /dev/null
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ *   Copyright (C) 2020, Microsoft Corporation.
+ *
+ *   Author(s): Steve French <stfrench@microsoft.com>
+ *              Suresh Jayaraman <sjayaraman@suse.de>
+ *              Jeff Layton <jlayton@kernel.org>
+ */
+
+#include <linux/slab.h>
+#include "cifsproto.h"
+
+/* 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;
+}
+
+char *extract_sharename(const char *unc)
+{
+       const char *src;
+       char *delim, *dst;
+       int len;
+
+       /* skip double chars at the beginning */
+       src = unc + 2;
+
+       /* share name is always preceded by '\\' now */
+       delim = strchr(src, '\\');
+       if (!delim)
+               return ERR_PTR(-EINVAL);
+       delim++;
+       len = strlen(delim);
+
+       /* caller has to free the memory */
+       dst = kstrndup(delim, len, GFP_KERNEL);
+       if (!dst)
+               return ERR_PTR(-ENOMEM);
+
+       return dst;
+}