]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ksmbd: fix corrupted mtime and ctime in smb2_open
authorNamjae Jeon <linkinjeon@kernel.org>
Fri, 25 Jul 2025 01:33:28 +0000 (10:33 +0900)
committerSteve French <stfrench@microsoft.com>
Fri, 25 Jul 2025 03:55:29 +0000 (22:55 -0500)
If STATX_BASIC_STATS flags are not given as an argument to vfs_getattr,
It can not get ctime and mtime in kstat.

This causes a problem showing mtime and ctime outdated from cifs.ko.
File: /xfstest.test/foo
Size: 4096            Blocks: 8          IO Block: 1048576 regular file
Device: 0,65    Inode: 2033391     Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:cifs_t:s0
Access: 2025-07-23 22:15:30.136051900 +0100
Modify: 1970-01-01 01:00:00.000000000 +0100
Change: 1970-01-01 01:00:00.000000000 +0100
Birth: 2025-07-23 22:15:30.136051900 +0100

Cc: stable@vger.kernel.org
Reported-by: David Howells <dhowells@redhat.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/vfs.c

index 05ac2b14a7b1fcb1eebeaad8f982f5fd4bfd16ea..2bd8cc20215a1ac99060440b68d00ad44b89d26c 100644 (file)
@@ -553,7 +553,8 @@ int ksmbd_vfs_getattr(const struct path *path, struct kstat *stat)
 {
        int err;
 
-       err = vfs_getattr(path, stat, STATX_BTIME, AT_STATX_SYNC_AS_STAT);
+       err = vfs_getattr(path, stat, STATX_BASIC_STATS | STATX_BTIME,
+                       AT_STATX_SYNC_AS_STAT);
        if (err)
                pr_err("getattr failed, err %d\n", err);
        return err;