Messages in this thread Patch in this message | | | From | Jianyong Wu <> | Subject | [RFC PATCH 1/2] vfs: pass file down when getattr to avoid losing info. | Date | Mon, 20 Jul 2020 09:46:21 +0800 |
| |
Currently, getting attribute for a file represented by fd is always by inode or path which may lead to bug for a certain network file system. Adding file struct into struct kstat and assigning file for it in vfs_statx_fd can avoid this issue. This change refers to struct istat.
Signed-off-by: Jianyong Wu <jianyong.wu@arm.com> --- fs/stat.c | 1 + include/linux/stat.h | 6 ++++++ 2 files changed, 7 insertions(+)
diff --git a/fs/stat.c b/fs/stat.c index 44f8ad346db4..0dee5487f6d6 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -147,6 +147,7 @@ int vfs_statx_fd(unsigned int fd, struct kstat *stat, return -EINVAL; f = fdget_raw(fd); + stat->filp = f.file; if (f.file) { error = vfs_getattr(&f.file->f_path, stat, request_mask, query_flags); diff --git a/include/linux/stat.h b/include/linux/stat.h index 56614af83d4a..4755c528d49a 100644 --- a/include/linux/stat.h +++ b/include/linux/stat.h @@ -48,6 +48,12 @@ struct kstat { struct timespec64 btime; /* File creation time */ u64 blocks; u64 mnt_id; + + /* + * Not an attribute, but an auxiliary info for filesystems wanting to + * implement an fstat() like method. + */ + struct file *filp; }; #endif -- 2.17.1
| |