exfat: ensure that ctime is updated whenever the mtime is
authorJeff Layton <jlayton@kernel.org>
Wed, 5 Jul 2023 19:00:31 +0000 (15:00 -0400)
committerChristian Brauner <brauner@kernel.org>
Mon, 10 Jul 2023 08:04:52 +0000 (10:04 +0200)
When removing entries from a directory, the ctime must also be updated
alongside the mtime.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Message-Id: <20230705190309.579783-4-jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/exfat/namei.c

index e0ff9d156f6f57bbc2b68132b9465bd8f9068307..d9b46fa36bffd77a76fb7a8574aed715992e0747 100644 (file)
@@ -817,7 +817,7 @@ static int exfat_unlink(struct inode *dir, struct dentry *dentry)
        ei->dir.dir = DIR_DELETED;
 
        inode_inc_iversion(dir);
-       dir->i_mtime = dir->i_atime = current_time(dir);
+       dir->i_mtime = dir->i_atime = dir->i_ctime = current_time(dir);
        exfat_truncate_atime(&dir->i_atime);
        if (IS_DIRSYNC(dir))
                exfat_sync_inode(dir);
@@ -825,7 +825,7 @@ static int exfat_unlink(struct inode *dir, struct dentry *dentry)
                mark_inode_dirty(dir);
 
        clear_nlink(inode);
-       inode->i_mtime = inode->i_atime = current_time(inode);
+       inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
        exfat_truncate_atime(&inode->i_atime);
        exfat_unhash_inode(inode);
        exfat_d_version_set(dentry, inode_query_iversion(dir));
@@ -979,7 +979,7 @@ static int exfat_rmdir(struct inode *dir, struct dentry *dentry)
        ei->dir.dir = DIR_DELETED;
 
        inode_inc_iversion(dir);
-       dir->i_mtime = dir->i_atime = current_time(dir);
+       dir->i_mtime = dir->i_atime = dir->i_ctime = current_time(dir);
        exfat_truncate_atime(&dir->i_atime);
        if (IS_DIRSYNC(dir))
                exfat_sync_inode(dir);
@@ -988,7 +988,7 @@ static int exfat_rmdir(struct inode *dir, struct dentry *dentry)
        drop_nlink(dir);
 
        clear_nlink(inode);
-       inode->i_mtime = inode->i_atime = current_time(inode);
+       inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
        exfat_truncate_atime(&inode->i_atime);
        exfat_unhash_inode(inode);
        exfat_d_version_set(dentry, inode_query_iversion(dir));