]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
exfat: Month timestamp metadata accidentally incremented
authorValdis Klētnieks <valdis.kletnieks@vt.edu>
Fri, 15 Jan 2021 07:38:19 +0000 (02:38 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 17 Jan 2021 13:05:34 +0000 (14:05 +0100)
The staging/exfat driver has departed, but a lot of distros are still tracking
5.4-stable, so we should fix this.

There was an 0/1 offset error in month handling for file metadata, causing
the month to get incremented on each reference to the file.

Thanks to Sebastian Gurtler for troubleshooting this, and Arpad Mueller
for bringing it to my attention.

Relevant discussions:
https://bugzilla.kernel.org/show_bug.cgi?id=210997
https://bugs.launchpad.net/ubuntu/+source/ubuntu-meta/+bug/1872504

Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/exfat/exfat_super.c

index 58c7d66060f7eeefed9780234223c1d367e4c34d..dd12777b9a788a2b108c20041e1308eb31dd1371 100644 (file)
@@ -59,7 +59,7 @@ static void exfat_write_super(struct super_block *sb);
 /* Convert a FAT time/date pair to a UNIX date (seconds since 1 1 70). */
 static void exfat_time_fat2unix(struct timespec64 *ts, struct date_time_t *tp)
 {
-       ts->tv_sec = mktime64(tp->Year + 1980, tp->Month + 1, tp->Day,
+       ts->tv_sec = mktime64(tp->Year + 1980, tp->Month, tp->Day,
                              tp->Hour, tp->Minute, tp->Second);
 
        ts->tv_nsec = tp->MilliSecond * NSEC_PER_MSEC;