summaryrefslogtreecommitdiffstats
path: root/arch/Kconfig
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2019-04-29 09:19:37 -0400
committerThomas Gleixner <tglx@linutronix.de>2019-04-29 15:07:10 -0400
commitf3d964673b2f1c5d5c68c77273efcf7103eed03b (patch)
tree60e92616157ebaf5d0223573ac1f5c0904d8a4fb /arch/Kconfig
parent80871482fd5cb1cb396ea232237a7d9c540854f9 (diff)
y2038: Make CONFIG_64BIT_TIME unconditional
As Stepan Golosunov points out, there is a small mistake in the get_timespec64() function in the kernel. It was originally added under the assumption that CONFIG_64BIT_TIME would get enabled on all 32-bit and 64-bit architectures, but when the conversion was done, it was only turned on for 32-bit ones. The effect is that the get_timespec64() function never clears the upper half of the tv_nsec field for 32-bit tasks in compat mode. Clearing this is required for POSIX compliant behavior of functions that pass a 'timespec' structure with a 64-bit tv_sec and a 32-bit tv_nsec, plus uninitialized padding. The easiest fix for linux-5.1 is to just make the Kconfig symbol unconditional, as it was originally intended. As a follow-up, the #ifdef CONFIG_64BIT_TIME can be removed completely.. Note: for native 32-bit mode, no change is needed, this works as designed and user space should never need to clear the upper 32 bits of the tv_nsec field, in or out of the kernel. Fixes: 00bf25d693e7 ("y2038: use time32 syscall names on 32-bit") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Joseph Myers <joseph@codesourcery.com> Cc: libc-alpha@sourceware.org Cc: linux-api@vger.kernel.org Cc: Deepa Dinamani <deepa.kernel@gmail.com> Cc: Lukasz Majewski <lukma@denx.de> Cc: Stepan Golosunov <stepan@golosunov.pp.ru> Link: https://lore.kernel.org/lkml/20190422090710.bmxdhhankurhafxq@sghpc.golosunov.pp.ru/ Link: https://lkml.kernel.org/r/20190429131951.471701-1-arnd@arndb.de
Diffstat (limited to 'arch/Kconfig')
-rw-r--r--arch/Kconfig2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index 33687dddd86a..9092e0ffe4d3 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -764,7 +764,7 @@ config COMPAT_OLD_SIGACTION
764 bool 764 bool
765 765
766config 64BIT_TIME 766config 64BIT_TIME
767 def_bool ARCH_HAS_64BIT_TIME 767 def_bool y
768 help 768 help
769 This should be selected by all architectures that need to support 769 This should be selected by all architectures that need to support
770 new system calls with a 64-bit time_t. This is relevant on all 32-bit 770 new system calls with a 64-bit time_t. This is relevant on all 32-bit