I added stable already - will add your reviewed by as well. thx On Thu, Feb 6, 2020 at 12:24 PM Pavel Shilovsky <piastryyy@xxxxxxxxx> wrote: > > чт, 6 февр. 2020 г. в 09:17, Aurelien Aptel <aaptel@xxxxxxxx>: > > > > When mounting with -o modefromsid, the mode bits are stored in an > > ACE. Directory enumeration (e.g. ls -l /mnt) triggers an SMB Query Dir > > which does not include ACEs in its response. The mode bits in this > > case are silently set to a default value of 755 instead. > > > > This patch marks the dentry created during the directory enumeration > > as needing re-evaluation (i.e. additional Query Info with ACEs) so > > that the mode bits can be properly extracted. > > > > Quick repro: > > > > $ mount.cifs //win19.test/data /mnt -o ...,modefromsid > > $ touch /mnt/foo && chmod 751 /mnt/foo > > $ stat /mnt/foo > > # reports 751 (OK) > > $ sleep 2 > > # dentry older than 1s by default get invalidated > > $ ls -l /mnt > > # since dentry invalid, ls does a Query Dir > > # and reports foo as 755 (WRONG) > > > > Signed-off-by: Aurelien Aptel <aaptel@xxxxxxxx> > > --- > > fs/cifs/readdir.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c > > index d17587c2c4ab..ba9dadf3be24 100644 > > --- a/fs/cifs/readdir.c > > +++ b/fs/cifs/readdir.c > > @@ -196,7 +196,8 @@ cifs_fill_common_info(struct cifs_fattr *fattr, struct cifs_sb_info *cifs_sb) > > * may look wrong since the inodes may not have timed out by the time > > * "ls" does a stat() call on them. > > */ > > - if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) > > + if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) || > > + (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MODE_FROM_SID)) > > fattr->cf_flags |= CIFS_FATTR_NEED_REVAL; > > > > if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL && > > -- > > 2.16.4 > > > > Reviewed-by: Pavel Shilovsky <pshilov@xxxxxxxxxxxxx> > > This patch needs stable tag since "modefromsid" was introduced in v5.5. > > -- > Best regards, > Pavel Shilovsky -- Thanks, Steve