VFS: fix statfs() automounter semantics regression
authorDan McGee <dpmcgee@gmail.com>
Tue, 1 Nov 2011 23:23:10 +0000 (18:23 -0500)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 5 Nov 2011 01:15:59 +0000 (18:15 -0700)
No one in their right mind would expect statfs() to not work on a
automounter managed mount point. Fix it.

[ I'm not sure about the "no one in their right mind" part.  It's not
  mounted, and you didn't ask for it to be mounted.  But nobody will
  really care, and this probably makes it match previous semantics, so..
      - Linus ]

This mirrors the fix made to the quota code in 815d405ceff0d69646.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/statfs.c

index 8244924..9cf04a1 100644 (file)
@@ -76,7 +76,7 @@ EXPORT_SYMBOL(vfs_statfs);
 int user_statfs(const char __user *pathname, struct kstatfs *st)
 {
        struct path path;
 int user_statfs(const char __user *pathname, struct kstatfs *st)
 {
        struct path path;
-       int error = user_path(pathname, &path);
+       int error = user_path_at(AT_FDCWD, pathname, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path);
        if (!error) {
                error = vfs_statfs(&path, st);
                path_put(&path);
        if (!error) {
                error = vfs_statfs(&path, st);
                path_put(&path);