[PATCH] fs/smb/client: add verbose error logging for UNC parsing

FredTheDude <[email protected]> Sun, 29 Mar 2026 02:03:38 +0000
Newsgroups gmane.linux.kernel,gmane.linux.kernel.cifs,gmane.network.samba.internals
Message-ID <2__2tXx9Hngg7rDwgOdZVY8FFBkjQGk_0TviV3dVWkoCa9CZznTtxHJsVvgg9U0lyXUo-_6KKPTPFZTIGTLo9YfQczBj2CxTZypXB2ydr7c=@proton.me>
Add cifs_dbg(VFS, ...) statements to smb3_parse_devname() to provide
explicit feedback when parsing fails. Currently, the function returns
-EINVAL silently, making it difficult to debug mount failures caused
by malformed paths or missing share names.

Signed-off-by: Fredric Cover <[email protected]>
---

If I made any stupid mistakes, please be patient with me.
C is not my best language, and this is my first patch, and I am just a high school freshman. Thanks!
---
 fs/smb/client/fs_context.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/fs/smb/client/fs_context.c b/fs/smb/client/fs_context.c
index a4a7c7eee..03c112f4d 100644
--- a/fs/smb/client/fs_context.c
+++ b/fs/smb/client/fs_context.c
@@ -658,13 +658,17 @@ smb3_parse_devname(const char *devname, struct smb3_fs_context *ctx)

        /* make sure we have a valid UNC double delimiter prefix */
        len = strspn(devname, delims);
-       if (len != 2)
+       if (len != 2) {
+               cifs_dbg(VFS, "UNC: path must begin with // or \\\\\n");
                return -EINVAL;
+       }

        /* find delimiter between host and sharename */
        pos = strpbrk(devname + 2, delims);
-       if (!pos)
+       if (!pos) {
+               cifs_dbg(VFS, "UNC: missing delimiter between hostname and share name\n");
                return -EINVAL;
+       }

        /* record the server hostname */
        kfree(ctx->server_hostname);
@@ -677,8 +681,10 @@ smb3_parse_devname(const char *devname, struct smb3_fs_context *ctx)

        /* now go until next delimiter or end of string */
        len = strcspn(pos, delims);
-       if (!len)
+       if (!len) {
+               cifs_dbg(VFS, "UNC: missing share name\n");
                return -EINVAL;
+       }

        /* move "pos" up to delimiter or NULL */
        pos += len;
--
2.43.0