Messages in this thread | | | From | Arnd Bergmann <> | Date | Tue, 25 Apr 2017 23:23:41 +0200 | Subject | Re: [Y2038] [PATCH v5 2/5] vfs: Add checks for filesystem timestamp limits |
| |
On Tue, Apr 25, 2017 at 10:35 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > On Tue, Apr 25, 2017 at 1:31 PM, Arnd Bergmann <arnd@arndb.de> wrote: >> >> Would it be ok to have a simple way of removing the time_t definition (e.g. >> by passing '-DREQUIRE_TIME64' to the compiler, but without the Kconfig >> option? That way, someone who wants to ship a product can at least >> find the obvious dependencies on stuff that remains broken. > > How would you find them? > > People don't necessarily use "time_t". They might use "int" or whatever.
My main approach has been:
* Assume that all of the time_t based interfaces are broken on 32-bit systems (some are not, but almost all are)
* For each interface that exposes a time_t to other files, introduce a replacement interface that is known to work
* Change users of the old interface over to the new one, one at a time, while manually reviewing all other code this interacts with.
Note that the vast majority of all the in-kernel uses of time_t variables actually use timespec or timeval structures because they require sub-second resolution, so we already know that they cannot accidentally get assigned to 'int'. Also, we typically replace them with ktime_t for efficiency. In case we replace a timespec with timespec64, we do have to be careful to ensure that no code just treats the tv_sec member as 'int' or 'long' though.
Arnd
| |