Skip to content
Snippets Groups Projects
Commit ab225417 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: Don't silently fail setattr() requests on mountpoints


Ensure that any setattr and getattr requests for junctions and/or
mountpoints are sent to the server. Ever since commit
0ec26fd0 (vfs: automount should ignore LOOKUP_FOLLOW), we have
silently dropped any setattr requests to a server-side mountpoint.
For referrals, we have silently dropped both getattr and setattr
requests.

This patch restores the original behaviour for setattr on mountpoints,
and tries to do the same for referrals, provided that we have a
filehandle...

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
parent 65436ec0
No related branches found
No related tags found
No related merge requests found
...@@ -177,11 +177,31 @@ struct vfsmount *nfs_d_automount(struct path *path) ...@@ -177,11 +177,31 @@ struct vfsmount *nfs_d_automount(struct path *path)
return mnt; return mnt;
} }
static int
nfs_namespace_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)
{
if (NFS_FH(dentry->d_inode)->size != 0)
return nfs_getattr(mnt, dentry, stat);
generic_fillattr(dentry->d_inode, stat);
return 0;
}
static int
nfs_namespace_setattr(struct dentry *dentry, struct iattr *attr)
{
if (NFS_FH(dentry->d_inode)->size != 0)
return nfs_setattr(dentry, attr);
return -EACCES;
}
const struct inode_operations nfs_mountpoint_inode_operations = { const struct inode_operations nfs_mountpoint_inode_operations = {
.getattr = nfs_getattr, .getattr = nfs_getattr,
.setattr = nfs_setattr,
}; };
const struct inode_operations nfs_referral_inode_operations = { const struct inode_operations nfs_referral_inode_operations = {
.getattr = nfs_namespace_getattr,
.setattr = nfs_namespace_setattr,
}; };
static void nfs_expire_automounts(struct work_struct *work) static void nfs_expire_automounts(struct work_struct *work)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment