Re: [PATCH] cifs: Fix support for creating SFU socket
From: Steve French
Date: Wed Jul 08 2026 - 09:52:23 EST
AI query made it sound like "LnxSOCK" is still used by WSL. Is this
change safe?
"Yes. WSL (particularly WSL 1 and WSL 2 when interacting with NTFS via
DrvFs) uses the Lnx* metadata family to represent Linux special file
types, including:
LnxSOCK
LnxFIFO
LnxCHR
LnxBLK"
On Tue, Jul 7, 2026 at 4:13 AM Pali Rohár <pali@xxxxxxxxxx> wrote:
>
> SFU sockets are natively supported by Interix 3.0 subsystem and also by
> later versions. It is part of Microsoft SFU (Windows Services for UNIX) and
> Microsoft SUA (Subsystem for UNIX-based Applications). They can be created
> and existing (stored on local disk or remote SMB share) can be recognized.
>
> SFU sockets are recognized also by NFS server included in Windows Server.
> Windows NFS server versions since Windows Server 2012 uses new reparse
> point format for storing new sockets, but still can recognize this old
> format (also in the latest Windows Server 2022 version).
>
> SFU-style socket is a regular file which has system attribute set and
> content of the file is one zero byte.
>
> These SFU-style sockets are already recognized by Linux SMB client.
>
> But Linux SMB client is currently creating new SFU socket in different
> format which is not compatible with all those SFU applications. Fix this by
> creating new sockets in correct SFU format which would be recognized by all
> SFU, SUA, NFS and existing Linux SMB clients.
>
> This change affects only creating new sockets when mount option -o sfu is used.
>
> Signed-off-by: Pali Rohár <pali@xxxxxxxxxx>
> ---
> fs/smb/client/smb2ops.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
> index 4f7eefa7a683..e59fda1b2230 100644
> --- a/fs/smb/client/smb2ops.c
> +++ b/fs/smb/client/smb2ops.c
> @@ -5288,10 +5288,9 @@ int __cifs_sfu_make_node(unsigned int xid, struct inode *inode,
> data = (u8 *)symname_utf16;
> break;
> case S_IFSOCK:
> - type_len = 8;
> - strscpy(type, "LnxSOCK");
> - data = (u8 *)&pdev;
> - data_len = sizeof(pdev);
> + /* SFU socket is system file with one zero byte */
> + type_len = 1;
> + type[0] = '\0';
> break;
> case S_IFIFO:
> type_len = 8;
> --
> 2.20.1
>
>
--
Thanks,
Steve