y2038: provide aliases for compat helpers

Message ID 20180821203329.2089473-1-arnd@arndb.de
State Accepted
Commit fd991a23c8f6ef30692f77409602ccf3614353b2
Headers show
Series
  • y2038: provide aliases for compat helpers
Related show

Commit Message

Arnd Bergmann Aug. 21, 2018, 8:33 p.m.
As part of the system call rework for 64-bit time_t, we are restructuring
the way that compat syscalls deal with 32-bit time_t, reusing the
implementation for 32-bit architectures. Christoph Hellwig suggested
a rename of the associated types and interfaces to avoid the confusing
usage of the 'compat' prefix for 32-bit architectures.

To prepare for doing that in linux-4.20, this adds a set of macros
that lets us convert subsystems separately to the new names and
avoid some of the nastier merge conflicts.

Link: https://lore.kernel.org/lkml/20180713133204.3123939-1-arnd@arndb.de/
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
The patch I posted originally was ready but didn't see proper linux-next
testing as I did not get to finalize it before my summer vacation,
so this is the minimal replacement I'd still like to get into 4.19-rc1,
in order to base patches for system calls, sound, networking, media
and file systems on top of.

I have put it into linux-next now after realizing that it would be
a problem to do all my other planned changes for the 4.20 merge
window. Please let me know if you have concerns about the approach,
or provide an Ack if this is ok with you.
---
 include/linux/time32.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

-- 
2.18.0

Comments

Christoph Hellwig Aug. 22, 2018, 1:09 p.m. | #1
On Tue, Aug 21, 2018 at 10:33:00PM +0200, Arnd Bergmann wrote:
> As part of the system call rework for 64-bit time_t, we are restructuring

> the way that compat syscalls deal with 32-bit time_t, reusing the

> implementation for 32-bit architectures. Christoph Hellwig suggested

> a rename of the associated types and interfaces to avoid the confusing

> usage of the 'compat' prefix for 32-bit architectures.

> 

> To prepare for doing that in linux-4.20, this adds a set of macros

> that lets us convert subsystems separately to the new names and

> avoid some of the nastier merge conflicts.


Looks fine to me:

Acked-by: Christoph Hellwig <hch@lst.de>

Patch

diff --git a/include/linux/time32.h b/include/linux/time32.h
index 0b14f936100a..d1ae43c13e25 100644
--- a/include/linux/time32.h
+++ b/include/linux/time32.h
@@ -207,4 +207,19 @@  static inline s64 timeval_to_ns(const struct timeval *tv)
 extern struct timeval ns_to_timeval(const s64 nsec);
 extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec);
 
+/*
+ * New aliases for compat time functions. These will be used to replace
+ * the compat code so it can be shared between 32-bit and 64-bit builds
+ * both of which provide compatibility with old 32-bit tasks.
+ */
+#define old_time32_t		compat_time_t
+#define old_timeval32		compat_timeval
+#define old_timespec32		compat_timespec
+#define old_itimerspec32	compat_itimerspec
+#define ns_to_old_timeval32	ns_to_compat_timeval
+#define get_old_itimerspec32	get_compat_itimerspec64
+#define put_old_itimerspec32	put_compat_itimerspec64
+#define get_old_timespec32	compat_get_timespec64
+#define put_old_timespec32	compat_put_timespec64
+
 #endif