Commit 462d6057 authored by Al Viro's avatar Al Viro

fix NFS4 handling of mountpoint stat

RFC says we need to follow the chain of mounts if there's more
than one stacked on that point.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 3088dd70
...@@ -2121,9 +2121,15 @@ nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp, ...@@ -2121,9 +2121,15 @@ nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp,
* and this is the root of a cross-mounted filesystem. * and this is the root of a cross-mounted filesystem.
*/ */
if (ignore_crossmnt == 0 && if (ignore_crossmnt == 0 &&
exp->ex_path.mnt->mnt_root->d_inode == dentry->d_inode) { dentry == exp->ex_path.mnt->mnt_root) {
err = vfs_getattr(exp->ex_path.mnt->mnt_parent, struct path path = exp->ex_path;
exp->ex_path.mnt->mnt_mountpoint, &stat); path_get(&path);
while (follow_up(&path)) {
if (path.dentry != path.mnt->mnt_root)
break;
}
err = vfs_getattr(path.mnt, path.dentry, &stat);
path_put(&path);
if (err) if (err)
goto out_nfserr; goto out_nfserr;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment