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