From: Christoph Hellwig <hch@lst.de>
To: "Pali Rohár" <pali.rohar@gmail.com>
Cc: Namjae Jeon <namjae.jeon@samsung.com>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
gregkh@linuxfoundation.org, valdis.kletnieks@vt.edu, hch@lst.de,
sj1557.seo@samsung.com, linkinjeon@gmail.com,
Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v9 09/13] exfat: add misc operations
Date: Wed, 8 Jan 2020 19:03:04 +0100 [thread overview]
Message-ID: <20200108180304.GE14650@lst.de> (raw)
In-Reply-To: <20200102091902.tk374bxohvj33prz@pali>
Arnd, can you review the exfat time handling, especially vs y2038
related issues?
On Thu, Jan 02, 2020 at 10:19:02AM +0100, Pali Rohár wrote:
> On Thursday 02 January 2020 16:20:32 Namjae Jeon wrote:
> > This adds the implementation of misc operations for exfat.
> >
> > Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
> > Signed-off-by: Sungjong Seo <sj1557.seo@samsung.com>
> > ---
> > fs/exfat/misc.c | 253 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 253 insertions(+)
> > create mode 100644 fs/exfat/misc.c
> >
> > diff --git a/fs/exfat/misc.c b/fs/exfat/misc.c
> > new file mode 100644
> > index 000000000000..7f533bcb3b3f
> > --- /dev/null
> > +++ b/fs/exfat/misc.c
>
> ...
>
> > +/* <linux/time.h> externs sys_tz
> > + * extern struct timezone sys_tz;
> > + */
> > +#define UNIX_SECS_1980 315532800L
> > +
> > +#if BITS_PER_LONG == 64
> > +#define UNIX_SECS_2108 4354819200L
> > +#endif
>
> ...
>
> > +#define TIMEZONE_CUR_OFFSET() ((sys_tz.tz_minuteswest / (-15)) & 0x7F)
> > +/* Convert linear UNIX date to a FAT time/date pair. */
> > +void exfat_time_unix2fat(struct exfat_sb_info *sbi, struct timespec64 *ts,
> > + struct exfat_date_time *tp)
> > +{
> > + time_t second = ts->tv_sec;
> > + time_t day, month, year;
> > + time_t ld; /* leap day */
>
> Question for other maintainers: Has kernel code already time_t defined
> as 64bit? Or it is still just 32bit and 32bit systems and some time64_t
> needs to be used? I remember that there was discussion about these
> problems, but do not know if it was changed/fixed or not... Just a
> pointer for possible Y2038 problem. As "ts" is of type timespec64, but
> "second" of type time_t.
>
> > +
> > + /* Treats as local time with proper time */
> > + second -= sys_tz.tz_minuteswest * SECS_PER_MIN;
> > + tp->timezone.valid = 1;
> > + tp->timezone.off = TIMEZONE_CUR_OFFSET();
> > +
> > + /* Jan 1 GMT 00:00:00 1980. But what about another time zone? */
> > + if (second < UNIX_SECS_1980) {
> > + tp->second = 0;
> > + tp->minute = 0;
> > + tp->hour = 0;
> > + tp->day = 1;
> > + tp->month = 1;
> > + tp->year = 0;
> > + return;
> > + }
> > +
> > + if (second >= UNIX_SECS_2108) {
>
> Hello, this code cause compile errors on 32bit systems as UNIX_SECS_2108
> macro is not defined when BITS_PER_LONG == 32.
>
> Value 4354819200 really cannot fit into 32bit signed integer, so you
> should use 64bit signed integer. I would suggest to define this macro
> value via LL not just L suffix (and it would work on both 32 and 64bit)
>
> #define UNIX_SECS_2108 4354819200LL
>
> > + tp->second = 59;
> > + tp->minute = 59;
> > + tp->hour = 23;
> > + tp->day = 31;
> > + tp->month = 12;
> > + tp->year = 127;
> > + return;
> > + }
>
> --
> Pali Rohár
> pali.rohar@gmail.com
---end quoted text---
next prev parent reply other threads:[~2020-01-08 18:03 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200102082359epcas1p2aa1eca9729a6ec54ec3b8140615dca6e@epcas1p2.samsung.com>
2020-01-02 8:20 ` [PATCH v9 00/13] add the latest exfat driver Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 01/13] exfat: add in-memory and on-disk structures and headers Namjae Jeon
2020-01-08 17:08 ` Christoph Hellwig
2020-01-09 22:43 ` Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 02/13] exfat: add super block operations Namjae Jeon
2020-01-08 17:21 ` Christoph Hellwig
2020-01-09 23:21 ` Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 03/13] exfat: add inode operations Namjae Jeon
2020-01-08 17:50 ` Christoph Hellwig
2020-01-09 23:23 ` Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 04/13] exfat: add directory operations Namjae Jeon
2020-01-08 17:52 ` Christoph Hellwig
2020-01-02 8:20 ` [PATCH v9 05/13] exfat: add file operations Namjae Jeon
2020-01-08 17:56 ` Christoph Hellwig
2020-01-02 8:20 ` [PATCH v9 06/13] exfat: add exfat entry operations Namjae Jeon
2020-01-08 18:00 ` Christoph Hellwig
2020-01-09 23:24 ` Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 07/13] exfat: add bitmap operations Namjae Jeon
2020-01-08 18:01 ` Christoph Hellwig
2020-01-02 8:20 ` [PATCH v9 08/13] exfat: add exfat cache Namjae Jeon
2020-01-08 18:02 ` Christoph Hellwig
2020-01-02 8:20 ` [PATCH v9 09/13] exfat: add misc operations Namjae Jeon
2020-01-02 9:19 ` Pali Rohár
2020-01-02 11:30 ` Namjae Jeon
2020-01-02 11:40 ` Pali Rohár
2020-01-03 18:36 ` Pali Rohár
2020-01-03 23:28 ` Namjae Jeon
2020-01-08 18:03 ` Christoph Hellwig [this message]
2020-01-08 19:40 ` Arnd Bergmann
2020-01-09 23:32 ` Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 10/13] exfat: add nls operations Namjae Jeon
2020-01-02 13:55 ` Pali Rohár
2020-01-03 7:06 ` Namjae Jeon
2020-01-03 8:44 ` Pali Rohár
2020-01-02 14:20 ` Pali Rohár
2020-01-03 4:44 ` Namjae Jeon
2020-01-03 9:40 ` Pali Rohár
2020-01-03 12:31 ` Pali Rohár
2020-01-09 22:35 ` Namjae Jeon
2020-01-05 15:24 ` Pali Rohár
2020-01-05 16:51 ` Pali Rohár
2020-01-06 19:46 ` Gabriel Krisman Bertazi
2020-01-07 11:52 ` Pali Rohár
2020-01-09 22:04 ` [PATCH v9 09/13] exfat: add misc operations Valdis Klētnieks
2020-01-09 23:41 ` Namjae Jeon
2020-01-09 22:37 ` [PATCH v9 10/13] exfat: add nls operations Namjae Jeon
2020-01-02 8:20 ` [PATCH v9 11/13] exfat: add Kconfig and Makefile Namjae Jeon
2020-01-02 12:53 ` Pali Rohár
2020-01-02 8:20 ` [PATCH v9 12/13] exfat: add exfat in fs/Kconfig and fs/Makefile Namjae Jeon
2020-01-02 12:58 ` Pali Rohár
2020-01-02 13:07 ` Namjae Jeon
2020-01-02 13:10 ` Pali Rohár
2020-01-02 14:19 ` Greg KH
2020-01-02 23:48 ` Namjae Jeon
2020-01-04 5:22 ` kbuild test robot
2020-01-04 5:22 ` kbuild test robot
2020-01-02 8:20 ` [PATCH v9 13/13] MAINTAINERS: add exfat filesystem Namjae Jeon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200108180304.GE14650@lst.de \
--to=hch@lst.de \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=linkinjeon@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=namjae.jeon@samsung.com \
--cc=pali.rohar@gmail.com \
--cc=sj1557.seo@samsung.com \
--cc=valdis.kletnieks@vt.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.