]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
statx: don't clear STATX_ATIME on SB_RDONLY
authorMiklos Szeredi <mszeredi@redhat.com>
Thu, 14 May 2020 14:44:24 +0000 (16:44 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Thu, 14 May 2020 14:44:24 +0000 (16:44 +0200)
IS_NOATIME(inode) is defined as __IS_FLG(inode, SB_RDONLY|SB_NOATIME), so
generic_fillattr() will clear STATX_ATIME from the result_mask if the super
block is marked read only.

This was probably not the intention, so fix to only clear STATX_ATIME if
the fs doesn't support atime at all.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Acked-by: David Howells <dhowells@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/stat.c

index a6709e7ba71d406226e4fdfef97dfe229ee8b703..f7f07d1b73cb3b600423c95d0e17ecd9a9986fee 100644 (file)
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -73,7 +73,8 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat,
        query_flags &= KSTAT_QUERY_FLAGS;
 
        /* allow the fs to override these if it really wants to */
-       if (IS_NOATIME(inode))
+       /* SB_NOATIME means filesystem supplies dummy atime value */
+       if (inode->i_sb->s_flags & SB_NOATIME)
                stat->result_mask &= ~STATX_ATIME;
        if (IS_AUTOMOUNT(inode))
                stat->attributes |= STATX_ATTR_AUTOMOUNT;