Hi, On Tue, Jun 16, 2020 at 08:58:49PM -0400, J. Bruce Fields wrote: > On Tue, Jun 16, 2020 at 06:16:58PM +0200, Salvatore Bonaccorso wrote: > > This might be unneeded to test but as additional datapoint which > > confirms the suspect: I tried check the commit around 47057abde515 > > ("nfsd: add support for the umask attribute") in 4.10-rc1 > > > > A kernel built with 47057abde515~1, and mounting from an enough recent > > client which has at least dff25ddb4808 ("nfs: add support for the > > umask attribute") does not show the observed behaviour, the server > > built with 47057abde515 does. > > Thanks for the confirmation! > > I think I'll send the following upstream. > > --b. > > commit 595ccdca9321 > Author: J. Bruce Fields <bfields@xxxxxxxxxx> > Date: Tue Jun 16 16:43:18 2020 -0400 > > nfsd: apply umask on fs without ACL support > > The server is failing to apply the umask when creating new objects on > filesystems without ACL support. > > To reproduce this, you need to use NFSv4.2 and a client and server > recent enough to support umask, and you need to export a filesystem that > lacks ACL support (for example, ext4 with the "noacl" mount option). > > Filesystems with ACL support are expected to take care of the umask > themselves (usually by calling posix_acl_create). > > For filesystems without ACL support, this is up to the caller of > vfs_create(), vfs_mknod(), or vfs_mkdir(). > > Reported-by: Elliott Mitchell <ehem+debian@xxxxxxx> > Reported-by: Salvatore Bonaccorso <carnil@xxxxxxxxxx> > Fixes: 47057abde515 ("nfsd: add support for the umask attribute") > Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> > > diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c > index 0aa02eb18bd3..8fa3e0ff3671 100644 > --- a/fs/nfsd/vfs.c > +++ b/fs/nfsd/vfs.c > @@ -1225,6 +1225,9 @@ nfsd_create_locked(struct svc_rqst *rqstp, struct svc_fh *fhp, > iap->ia_mode = 0; > iap->ia_mode = (iap->ia_mode & S_IALLUGO) | type; > > + if (!IS_POSIXACL(dirp)) > + iap->ia_mode &= ~current_umask(); > + > err = 0; > host_err = 0; > switch (type) { > @@ -1457,6 +1460,9 @@ do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp, > goto out; > } > > + if (!IS_POSIXACL(dirp)) > + iap->ia_mode &= ~current_umask(); > + > host_err = vfs_create(dirp, dchild, iap->ia_mode, true); > if (host_err < 0) { > fh_drop_write(fhp); Thank you, could test this on my test setup and seem to work properly. Should it also be CC'ed to stable@xxxxxxxxxxxxxxx so it is picked up by the current supported stable series? Regards, Salvatore