The patch titled Subject: Cleanup "fat: propagate 64-bit inode timestamps" patch has been added to the -mm tree. Its filename is fat-propagate-64-bit-inode-timestamps-fix.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/fat-propagate-64-bit-inode-timestamps-fix.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/fat-propagate-64-bit-inode-timestamps-fix.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx> Subject: Cleanup "fat: propagate 64-bit inode timestamps" patch - Remove useless temporary variable - Remove needless long long Signed-off-by: OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx> Acked-by: Arnd Bergmann <arnd@xxxxxxxx> Cc: Jeff Layton <jlayton@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/fat/inode.c | 10 +++------- fs/fat/misc.c | 7 +++---- 2 files changed, 6 insertions(+), 11 deletions(-) --- a/fs/fat/inode.c~fat-propagate-64-bit-inode-timestamps-fix +++ a/fs/fat/inode.c @@ -509,7 +509,6 @@ static int fat_validate_dir(struct inode int fat_fill_inode(struct inode *inode, struct msdos_dir_entry *de) { struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); - struct timespec64 ts; int error; MSDOS_I(inode)->i_pos = 0; @@ -559,14 +558,11 @@ int fat_fill_inode(struct inode *inode, inode->i_blocks = ((inode->i_size + (sbi->cluster_size - 1)) & ~((loff_t)sbi->cluster_size - 1)) >> 9; - fat_time_fat2unix(sbi, &ts, de->time, de->date, 0); - inode->i_mtime = ts; + fat_time_fat2unix(sbi, &inode->i_mtime, de->time, de->date, 0); if (sbi->options.isvfat) { - fat_time_fat2unix(sbi, &ts, de->ctime, + fat_time_fat2unix(sbi, &inode->i_ctime, de->ctime, de->cdate, de->ctime_cs); - inode->i_ctime = ts; - fat_time_fat2unix(sbi, &ts, 0, de->adate, 0); - inode->i_atime = ts; + fat_time_fat2unix(sbi, &inode->i_atime, 0, de->adate, 0); } else inode->i_ctime = inode->i_atime = inode->i_mtime; --- a/fs/fat/misc.c~fat-propagate-64-bit-inode-timestamps-fix +++ a/fs/fat/misc.c @@ -180,7 +180,7 @@ int fat_chain_add(struct inode *inode, i #define IS_LEAP_YEAR(y) (!((y) & 3) && (y) != YEAR_2100) /* Linear day numbers of the respective 1sts in non-leap years. */ -static time64_t days_in_year[] = { +static long days_in_year[] = { /* Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec */ 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 0, 0, 0, }; @@ -191,8 +191,7 @@ void fat_time_fat2unix(struct msdos_sb_i { u16 time = le16_to_cpu(__time), date = le16_to_cpu(__date); time64_t second; - long day, leap_day, month; - long long year; + long day, leap_day, month, year; year = date >> 9; month = max(1, (date >> 5) & 0xf); @@ -207,7 +206,7 @@ void fat_time_fat2unix(struct msdos_sb_i second = (time & 0x1f) << 1; second += ((time >> 5) & 0x3f) * SECS_PER_MIN; second += (time >> 11) * SECS_PER_HOUR; - second += (year * 365 + leap_day + second += (time64_t)(year * 365 + leap_day + days_in_year[month] + day + DAYS_DELTA) * SECS_PER_DAY; _ Patches currently in -mm which might be from hirofumi@xxxxxxxxxxxxxxxxxx are fat-validate-i_start-before-using.patch fat-propagate-64-bit-inode-timestamps-fix.patch