f2fs: fix wrong i_atime recovery
authorChao Yu <yuchao0@huawei.com>
Thu, 3 Nov 2016 16:26:55 +0000 (00:26 +0800)
committerJaegeuk Kim <jaegeuk@google.com>
Mon, 25 Sep 2017 22:12:25 +0000 (15:12 -0700)
commit 9f0552e078b8a25fcf9c3950a05ea1398616d2b9 upstream.

Shouldn't update in-memory i_atime with on-disk i_mtime of inode when
recovering inode.

Shuoran found this bug which is hidden for a long time, honour is belong
to him.

Signed-off-by: Shuoran Liu <liushuoran@huawei.com>
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/recovery.c

index 2fc84a99132526cdd547eefdbab088f15d437531..d2ba4da08ec398fc9d4ffab0fc73b69671b125f9 100644 (file)
@@ -180,10 +180,10 @@ static void recover_inode(struct inode *inode, struct page *page)
 
        inode->i_mode = le16_to_cpu(raw->i_mode);
        f2fs_i_size_write(inode, le64_to_cpu(raw->i_size));
-       inode->i_atime.tv_sec = le64_to_cpu(raw->i_mtime);
+       inode->i_atime.tv_sec = le64_to_cpu(raw->i_atime);
        inode->i_ctime.tv_sec = le64_to_cpu(raw->i_ctime);
        inode->i_mtime.tv_sec = le64_to_cpu(raw->i_mtime);
-       inode->i_atime.tv_nsec = le32_to_cpu(raw->i_mtime_nsec);
+       inode->i_atime.tv_nsec = le32_to_cpu(raw->i_atime_nsec);
        inode->i_ctime.tv_nsec = le32_to_cpu(raw->i_ctime_nsec);
        inode->i_mtime.tv_nsec = le32_to_cpu(raw->i_mtime_nsec);