All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Pali Rohár" <pali@kernel.org>
To: Steve French <smfrench@gmail.com>
Cc: CIFS <linux-cifs@vger.kernel.org>
Subject: Re: [PATCH RESEND 06/11] cifs: Validate presence of EA $LXMOD for WSL reparse points
Date: Tue, 7 Jul 2026 01:02:28 +0200	[thread overview]
Message-ID: <20260706230228.a574wmdy2kdigobh@pali> (raw)
In-Reply-To: <CAH2r5mu4LK8cgWHDb_EUpUHkZdD1EtoJcp_c7Zv0KGmibW+=2Q@mail.gmail.com>

Without this change, Linux recognize some nodes as special files which
are not special at all (for WSL). With this change, the recognition is
aligned with the WSL. Those nodes which are special for WSL are
recognized as special also by Linux client. And those nodes which
regular files for WSL are also regular for Linux client.

So this is mostly alignment between MS WSL client and Linux client, to
ensure interoperability.

On Monday 06 July 2026 17:55:50 Steve French wrote:
> Without this change would Linux client recognize it more accurately?
> 
> On Mon, Jul 6, 2026 at 5:39 PM Pali Rohár <pali@kernel.org> wrote:
> >
> > With this change applied, such nodes are recognized as "regular files" same as in WSL.
> >
> > On Monday 06 July 2026 17:30:35 Steve French wrote:
> > > If this EA is missing, does Linux client still recognize it (not
> > > talking about WSL just what Linux client would see)?
> > >
> > > On Mon, Jul 6, 2026 at 1:51 PM Pali Rohár <pali@kernel.org> wrote:
> > > >
> > > > S_DT part of xattr $LXMOD is mandatory for all WSL reparse points except the
> > > > WSL symlink and Win32 socket. Microsoft WSL subsystem does not recognize
> > > > them without xattr $LXMOD too, and treat such inodes as regular files.
> > > >
> > > > Fixes: ef201e8759d2 ("cifs: Validate EAs for WSL reparse points")
> > > > Fixes: 78e26bec4d6d ("smb: client: parse uid, gid, mode and dev from WSL reparse points")
> > > > Signed-off-by: Pali Rohár <pali@kernel.org>
> > > > ---
> > > >  fs/smb/client/reparse.c | 12 ++++++++++++
> > > >  1 file changed, 12 insertions(+)
> > > >
> > > > diff --git a/fs/smb/client/reparse.c b/fs/smb/client/reparse.c
> > > > index 49a6a0cc2b61..99e93b56374f 100644
> > > > --- a/fs/smb/client/reparse.c
> > > > +++ b/fs/smb/client/reparse.c
> > > > @@ -1124,6 +1124,7 @@ static bool wsl_to_fattr(struct cifs_open_info_data *data,
> > > >  {
> > > >         struct smb2_file_full_ea_info *ea;
> > > >         bool ignore_missing_eas = false;
> > > > +       bool have_xattr_mode = false;
> > > >         bool have_xattr_dev = false;
> > > >         umode_t reparse_mode_type = 0;
> > > >         u32 next = 0;
> > > > @@ -1183,6 +1184,7 @@ static bool wsl_to_fattr(struct cifs_open_info_data *data,
> > > >                         if (S_DT(reparse_mode_type) != S_DT(le32_to_cpu(*(__le32 *)v)))
> > > >                                 return false;
> > > >                         fattr->cf_mode = (umode_t)le32_to_cpu(*(__le32 *)v);
> > > > +                       have_xattr_mode = true;
> > > >                 } else if (!strncmp(name, SMB2_WSL_XATTR_DEV, nlen)) {
> > > >                         fattr->cf_rdev = reparse_mkdev(v);
> > > >                         have_xattr_dev = true;
> > > > @@ -1194,6 +1196,16 @@ static bool wsl_to_fattr(struct cifs_open_info_data *data,
> > > >         if (!have_xattr_dev && (tag == IO_REPARSE_TAG_LX_CHR || tag == IO_REPARSE_TAG_LX_BLK))
> > > >                 return ignore_missing_eas;
> > > >
> > > > +       /*
> > > > +        * S_DT part of xattr MODE is mandatory for all WSL reparse points except the WSL symlink.
> > > > +        * Microsoft WSL does not recognize them without xattr MODE too (except the WSL symlink).
> > > > +        * IO_REPARSE_TAG_AF_UNIX is here an exception because this reparse point is used by both
> > > > +        * WSL subsystem and native NT/WinAPI subsystems. And NT/WinAPI creates AF UNIX socket
> > > > +        * without the xattr MODE and recognize it also without the xattr MODE.
> > > > +        */
> > > > +       if (!have_xattr_mode && (tag != IO_REPARSE_TAG_AF_UNIX && tag != IO_REPARSE_TAG_LX_SYMLINK))
> > > > +               return ignore_missing_eas;
> > > > +
> > > >         fattr->cf_mode |= reparse_mode_type;
> > > >         return true;
> > > >  }
> > > > --
> > > > 2.20.1
> > > >
> > > >
> > >
> > >
> > > --
> > > Thanks,
> > >
> > > Steve
> 
> 
> 
> -- 
> Thanks,
> 
> Steve

  reply	other threads:[~2026-07-06 23:02 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-06 18:48 [PATCH RESEND 00/11] cifs: Various changes Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 01/11] cifs: Fix and improve cifs_is_path_accessible() function Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 02/11] cifs: Remove code for querying FILE_INFO_STANDARD via CIFSSMBQPathInfo() Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 03/11] cifs: Remove CIFSSMBSetPathInfoFB() fallback function Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 04/11] cifs: Remove cifs_backup_query_path_info() and replace it by cifs_query_path_info() Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 05/11] cifs: Fix validation of EAs for WSL reparse points Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 06/11] cifs: Validate presence of EA $LXMOD " Pali Rohár
2026-07-06 22:30   ` Steve French
2026-07-06 22:39     ` Pali Rohár
2026-07-06 22:55       ` Steve French
2026-07-06 23:02         ` Pali Rohár [this message]
2026-07-06 18:48 ` [PATCH RESEND 07/11] cifs: Check if server supports EAs before trying to set it for WSL Pali Rohár
2026-07-06 22:33   ` Steve French
2026-07-06 22:42     ` Pali Rohár
     [not found]       ` <CAH2r5mvDGM7i8EsdPkW681a_AnXOAsHkg38eJqegO7g2gV8qAw@mail.gmail.com>
2026-07-06 22:58         ` Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 08/11] cifs: Extend ->set_EA() callback to allow operate on reparse point Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 09/11] cifs: Create native Window socket file compatible also with WSL subsystem Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 10/11] cifs: Add support for parsing WSL symlinks in version 1 format Pali Rohár
2026-07-06 20:50   ` Pali Rohár
2026-07-06 21:02   ` Pali Rohár
2026-07-06 18:48 ` [PATCH RESEND 11/11] cifs: Add support for creating " Pali Rohár

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260706230228.a574wmdy2kdigobh@pali \
    --to=pali@kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=smfrench@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.