Message ID | 1695105020-5886-1-git-send-email-dai.ngo@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4,1/1] nfs42: client needs to strip file mode's suid/sgid bit after ALLOCATE op | expand |
On Mon, 2023-09-18 at 23:30 -0700, Dai Ngo wrote: > The Linux NFS server strips the SUID and SGID from the file mode > on ALLOCATE op. > > Modify _nfs42_proc_fallocate to add NFS_INO_REVAL_FORCED to > nfs_set_cache_invalid's argument to force update of the file > mode suid/sgid bit. > > Suggested-by: Trond Myklebust <trondmy@hammerspace.com> > Signed-off-by: Dai Ngo <dai.ngo@oracle.com> > Reviewed-by: Jeff Layton <jlayton@kernel.org> > --- > v3 -> v4: add Suggested-by and Reviewed-by tag. > > fs/nfs/nfs42proc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c > index 63802d195556..9d2f07feeb29 100644 > --- a/fs/nfs/nfs42proc.c > +++ b/fs/nfs/nfs42proc.c > @@ -81,7 +81,8 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep, > if (status == 0) { > if (nfs_should_remove_suid(inode)) { > spin_lock(&inode->i_lock); > - nfs_set_cache_invalid(inode, NFS_INO_INVALID_MODE); > + nfs_set_cache_invalid(inode, > + NFS_INO_REVAL_FORCED | NFS_INO_INVALID_MODE); > spin_unlock(&inode->i_lock); > } > status = nfs_post_op_update_inode_force_wcc(inode, This fixes generic/683 and generic/684 for me, when nfsd has issued a write delegation. This was posted some time ago. Is there some reason this hasn't been merged yet? Tested-by: Jeff Layton <jlayton@kernel.org>
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c index 63802d195556..9d2f07feeb29 100644 --- a/fs/nfs/nfs42proc.c +++ b/fs/nfs/nfs42proc.c @@ -81,7 +81,8 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep, if (status == 0) { if (nfs_should_remove_suid(inode)) { spin_lock(&inode->i_lock); - nfs_set_cache_invalid(inode, NFS_INO_INVALID_MODE); + nfs_set_cache_invalid(inode, + NFS_INO_REVAL_FORCED | NFS_INO_INVALID_MODE); spin_unlock(&inode->i_lock); } status = nfs_post_op_update_inode_force_wcc(inode,