diff options
-rw-r--r-- | fs/stat.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -130,9 +130,13 @@ EXPORT_SYMBOL(vfs_getattr); | |||
130 | int vfs_statx_fd(unsigned int fd, struct kstat *stat, | 130 | int vfs_statx_fd(unsigned int fd, struct kstat *stat, |
131 | u32 request_mask, unsigned int query_flags) | 131 | u32 request_mask, unsigned int query_flags) |
132 | { | 132 | { |
133 | struct fd f = fdget_raw(fd); | 133 | struct fd f; |
134 | int error = -EBADF; | 134 | int error = -EBADF; |
135 | 135 | ||
136 | if (query_flags & ~KSTAT_QUERY_FLAGS) | ||
137 | return -EINVAL; | ||
138 | |||
139 | f = fdget_raw(fd); | ||
136 | if (f.file) { | 140 | if (f.file) { |
137 | error = vfs_getattr(&f.file->f_path, stat, | 141 | error = vfs_getattr(&f.file->f_path, stat, |
138 | request_mask, query_flags); | 142 | request_mask, query_flags); |