diff options
authorLinus Torvalds <>2013-09-30 19:35:10 +0400
committerGreg Kroah-Hartman <>2013-10-22 11:41:44 +0400
commit0ffc34c0d09a7d36ff84d1ac506a352a06ef5e4e (patch)
parentfa759b5d100c8b0d2ec2b83fcac990f2c3ac13b7 (diff)
vfs: allow O_PATH file descriptors for fstatfs()
commit 9d05746e7b16d8565dddbe3200faa1e669d23bbf upstream. Olga reported that file descriptors opened with O_PATH do not work with fstatfs(), found during further development of ksh93's thread support. There is no reason to not allow O_PATH file descriptors here (fstatfs is very much a path operation), so use "fdget_raw()". See commit 55815f70147d ("vfs: make O_PATH file descriptors usable for 'fstat()'") for a very similar issue reported for fstat() by the same team. Reported-and-tested-by: ольга крыжановская <> Acked-by: Al Viro <> Signed-off-by: Linus Torvalds <> Signed-off-by: Greg Kroah-Hartman <>
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/statfs.c b/fs/statfs.c
index 9cf04a118965..a133c3ef2be0 100644
--- a/fs/statfs.c
+++ b/fs/statfs.c
@@ -86,7 +86,7 @@ int user_statfs(const char __user *pathname, struct kstatfs *st)
int fd_statfs(int fd, struct kstatfs *st)
- struct file *file = fget(fd);
+ struct file *file = fget_raw(fd);
int error = -EBADF;
if (file) {
error = vfs_statfs(&file->f_path, st);