From patchwork Fri Apr 26 14:25:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 162918 Delivered-To: patch@linaro.org Received: by 2002:a02:c6d8:0:0:0:0:0 with SMTP id r24csp814422jan; Fri, 26 Apr 2019 07:25:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqx7Dp1wuUNGw2OTjWEpwTmBc2ucLPBbyY78p+nKNU+xGdZoqaWOszZGhwqUs6rcW28Btjnm X-Received: by 2002:a17:902:2f:: with SMTP id 44mr46304707pla.137.1556288748899; Fri, 26 Apr 2019 07:25:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556288748; cv=none; d=google.com; s=arc-20160816; b=ps2sb45vQVPA25yjWNiDjnToDhZjYwgos8Iwjs/0OXBgkTlt0eKXXh5eOKKN1qO9B6 J60cO6zzFAnPxfPaIPLSn8d1UZP6c4BPrnqoSKsxjiwMAo6nbJkCtdV39vjKIUAShfzp vxPPwoaeA7vegX4jwOjlfxoVHXkzI6tslTw/HBmVyRfTgOqIBsz9DmP77aHbXaHacCk6 UjjYjta5s/FTQEpZQm0FXUl1cjIJeQiyRyHUj9Z9Z7M5M/thzIhxmR5lCyLbVpyy0ShR MjYecYX6H5KXwdZATAFjxXwrZEAqt3I2pePAMgZLwuNg6it0nSFt7LNCgDqSSR+PNU22 hQzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=7uTGctWVk16IKeJtHknTgAF17YoZGFCLdDdh8Yxlrgo=; b=veTumrAihjEbbSVuN1t7eI6E7ZwPtUL5KS7hdBQju3KKUnaYe56olMyPhAO5Aod2y4 cELTEqUIY2npnwdOOE38gle3cFWXgnSuubOny+iSI1TbWKdT/XWC2v7dziE787D1yY/j veZi5FNv04wERx6Z7UBMXOgv4vmQ9/JGbea2+GX0tDNhitYumhAaC2U6+6IZhCmpkrMQ kSPZEQhCpiS3XSlWcSkfdEn27CrTbJpxhIjzI0IJXXu1dlgGBZFl0aGf+LwOMwu5dNTH RXCdGoX8ojJv/2Ihd/CVUQ1TycnxxdrPKpmu4HQ7O/6gW2cSrPhlVoldqYhCDD/qKoDY mb9g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v21si25193314plo.34.2019.04.26.07.25.48; Fri, 26 Apr 2019 07:25:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726475AbfDZOZr (ORCPT + 30 others); Fri, 26 Apr 2019 10:25:47 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:34199 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726120AbfDZOZr (ORCPT ); Fri, 26 Apr 2019 10:25:47 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.129]) with ESMTPA (Nemesis) id 1MbTCr-1gmtxm3d05-00buge; Fri, 26 Apr 2019 16:25:35 +0200 From: Arnd Bergmann To: Thomas Gleixner Cc: Joseph Myers , libc-alpha@sourceware.org, linux-api@vger.kernel.org, linux-kernel@vger.kernel.org, Deepa Dinamani , Arnd Bergmann , Lukasz Majewski , Stepan Golosunov Subject: [PATCH 1/2] y2038: make CONFIG_64BIT_TIME unconditional Date: Fri, 26 Apr 2019 16:25:04 +0200 Message-Id: <20190426142531.1378357-1-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:fIJzz9wj+ao9HQhnAv2jIWZsWFqfvgw+Oy7O3nycVovvV0MS3Nl obIIVIsSedgGiymLYKpYSUVpHoc0Xcjsn53G1AvEPhlQsm2EHLdpnRl0pg0Dxmn/zokJKiI +AeQdQ0tz7vq+N4Kmh27Ieor82N4OMHIeaKqP6oD8uhU93QAXEACHahCYcwkCVoYvqSYm7O uwPHbqqhCC3dpx1MNU4yw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:C4fKpd5A+4U=:odrg9PhoL/1HJOZeNkOhyH O5M1WrSt4d+MH2c9+JEu1wd/Z5pn2eEOsryNN3uybDS9OxybN0RXnwcaigQuLyec8Gus1fvhP MYdgH0vV2ziysm8z86qu/QN4EjMrnxFJZ5FtfFyQ3HRuNESSvCJb0UbM/0geqZNXChsafkWTn KGvj8uMgqByj4Ws6TqLgtYtYy1CLa7MngzGPozURxTXR+Cxw1KPrCFV5vuqDfSErTb4Ewp9WC Dmlb2n7zt7hYgMg8a90UZKnTD7+Wzek90pVVLE0UXYluR/kbDPk0aXHR/0pEj6tnUX/r/R5MN H2CLQ/ZNtptifaq36R3fN28U8uXYlbG34Y/cM0ssKRIIILtL2JxRTwzq6uDtKowKdEB9LHVnb 7/UvSI4/R92K9gSW6NXyRkONVFS+5ZQJNuzVb6wphWoD3xkF6/g/2+jxcrJmjob8Ncqicowv9 iVeMXCMjRiIOsC2ILZJcGFocNyBWSLO+rTO8Ec+I/yBOzvivNPOqu3jRMuMW6k4LLDIEtBfn5 aTRqVND8JstKCpCGAXv5//LrHHW3kUSatMukMmGHTe2GJDDJ/QflFs704ninGzLLNZfhDcLFq GN5FxvBhne8zC0kkcwzB5NxItoWuGTyt4SZHulZOh30vBrv9K+vDdRhRoSeB3A7jhNNd4UJTQ O9GjSTI4dvgRtgr73d/g+LmVdnDWkZ4juE2zwDlztY1qCe5bwJv0t7JV2VL/yiPCv3xFw8EGy 6EOZryWlAU7I+t20v7gKmC/tDbQuXPGr3cMYrw== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As Stepan Golosunov points out, we made 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 I did the conversion, I only turned it 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, we should remove any #ifdef CONFIG_64BIT_TIME completely. Link: https://lore.kernel.org/lkml/20190422090710.bmxdhhankurhafxq@sghpc.golosunov.pp.ru/ Cc: Lukasz Majewski Cc: Stepan Golosunov Signed-off-by: Arnd Bergmann --- Please apply this one as a bugfix for 5.1 --- arch/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.20.0 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 bool config 64BIT_TIME - def_bool ARCH_HAS_64BIT_TIME + def_bool y help This should be selected by all architectures that need to support new system calls with a 64-bit time_t. This is relevant on all 32-bit From patchwork Fri Apr 26 14:25:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 162919 Delivered-To: patch@linaro.org Received: by 2002:a02:c6d8:0:0:0:0:0 with SMTP id r24csp815554jan; Fri, 26 Apr 2019 07:26:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqxUufOxc305OKOXandDiyo2vI4v3Nch8Sre1Gh2b0/lFCXYsOcTMX5F/gH/YQEeyyXaWlLh X-Received: by 2002:a17:902:7d91:: with SMTP id a17mr46138287plm.338.1556288815764; Fri, 26 Apr 2019 07:26:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556288815; cv=none; d=google.com; s=arc-20160816; b=Qwd8YEddlmNsfir+0NUjUgPrJ4ZUOKdWDaAXxHnhJFmna2FthGAvJfiBg0RLqM0+jW Sd1KiWigZ4FQLTHhMmN9KPq1iwJf+c5AXgMxk0+MOEjtIKcHMoiAFFzXnbcTCbFiDkQY EgoUNTaKf7mH86amYXM8c1F98orjwNBrTknGJ0rQqBDsDwY4wy6J5hIhL1kk/tvbYbJq Vr4IZi2zE6vgbNLDVqSJkFL0YdLGFVAQl5HSeaUiFsrQ+a741Pnck4yd0jvYLRhqHwlt eW25QJvk86iWbTS2wgUq/atkAAyjbvfPvG9G9zwUzD3b8Gf5GrjIcUAoo6ZGarmuUVrG 2iQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=l7izjBTyGekq7pfEXzBuI9b+BAG3Pi2dygYnFQJVPi0=; b=NCgMYlIjRFNJs/amPVFo0mhaF4N6BjkWdLNtHdEWCpWpIu+k/eQzHonH5CF6eUBefb NiuJLXJ8heU83CvDEW+c5GO8c+cSoO4Zqe3fuuGjpXwGdmoz5OMAJTstVBS0b2UO7YG8 YbGFpxnXWzsBpHHWgb078gaCeIuERyaZtjhCqXjfXvXfP1aMy9EKY/oMt+uuA3PQfpFI uCkI3Y0If00+6IDpJTet8pZoka1RtZvXUKZxO+c25qz8HwtvWQg5Iq7QkrGFiZeZ3tWV DWDU64Qm1caEW3p3EjaxOhyS3of/v37QMQ5iNstgIHzp9kP4/H1/yoLgEKFoKnBxXZ5I B9Dg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p4si23545322pgh.526.2019.04.26.07.26.55; Fri, 26 Apr 2019 07:26:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726521AbfDZO0y (ORCPT + 30 others); Fri, 26 Apr 2019 10:26:54 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:47817 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726300AbfDZO0x (ORCPT ); Fri, 26 Apr 2019 10:26:53 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.129]) with ESMTPA (Nemesis) id 1N79Ey-1gjxWY3Vdc-017SDB; Fri, 26 Apr 2019 16:26:34 +0200 From: Arnd Bergmann To: Thomas Gleixner Cc: Joseph Myers , libc-alpha@sourceware.org, linux-api@vger.kernel.org, linux-kernel@vger.kernel.org, Deepa Dinamani , Arnd Bergmann , Benjamin LaHaise , Alexander Viro , John Stultz , Stephen Boyd , "David S. Miller" , linux-aio@kvack.org, linux-fsdevel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 2/2] y2038: remove CONFIG_64BIT_TIME Date: Fri, 26 Apr 2019 16:25:05 +0200 Message-Id: <20190426142531.1378357-2-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20190426142531.1378357-1-arnd@arndb.de> References: <20190426142531.1378357-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:pjXQoUiFLLd5AZcOYPHe+Yv87CKp/2bRQj9L5IdyHlllyX1swCL KEyyDzWxeJiMQRVJsbN2SdOj5GNMkFRP1EzypybxgMWZYRBEcmxrsC5fhm7kLR3cXHSyMml 0Zq6ILdbJwDaJjWBMe3gwQCsrLodILgzEXOq/R1R+xRcm4sLgIwSn1sLj3LdbNamNQ+rKcg /AbDTdDj4qW6VgsaKoU5Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:Lx8cwdssJtM=:0FMNwAN48UJP6infa2tHYg xeU1qF8k2SuQQeUzOfx8Zfjvd9uiI+7nFUzWKKqIHDyqoXrmDGNItowIUHeXKYgGnRCLFiOb1 7zYzQjUah3mvWDbRsc+2fr/Xp/QfWg11TcmMh2PnDO8DJImUjVFn9dMcnsx/cqaY2fiLcpANU I3BMH4tkccVNcfiHFtQ4dxOLhKafB9FH1YYYql8emThRzQIjJ3F6XpJa59By7mZ8s+D1J5lrq vHZ/rKFjX3rzt10ShdL6NGUnhh1+juoEW0pRn6YJBijRdov33dnTmBekJDdXuvmhQ8BQ13qX4 nWMkoO60FniI31YwLHoXqObXXtP1zm+Xv7iAzry7he7zrHCl2fhaXbOHJXj4nYzET0YpNBn1V opY/Sk+NtJkRRMmZ/m3mGLHh7wfm+Xg4auPR6Sk83idWKaRG50VhBwukf/JIN4D4ntFXgsDoM sk2CxskqMbDvaw8kMGoqhseKRo54Uz155WKMuEW38XeMJTfrhHXFGSEJ7MRWdv7/MtF7gM+ZR MFU7qB68cY9lqaz5LHbc1S7Q/3rLVP4vtrN+aFYBz+13mcLp+RA40ZaRiwSrU2OMUupPuN/D7 PywueB00J+binMgD6w/JI/lecVBJeIrNDSZvrcBeshDtfZF8c5uAvVfW7oEIx+rnKa5uOCXkv iyWH5pYE0Zpm9+XdgjYaRPaP1SmACz+ENHdBLMUnkNAbysyCQKfiNSu+zegW26YOw5dTddzWy XVoIsvxQxnDABSGYEm0UfX99muH1w3jYf+ygEA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The CONFIG_64BIT_TIME option is defined on all architectures, and can be removed for simplicity now. Signed-off-by: Arnd Bergmann --- This would make sense for 5.2, or could be part of a later cleanup series when I have more patches for the remaining y2038 bits --- arch/Kconfig | 8 -------- fs/aio.c | 2 +- ipc/syscall.c | 2 +- kernel/time/hrtimer.c | 2 +- kernel/time/time.c | 4 ++-- net/socket.c | 2 +- 6 files changed, 6 insertions(+), 14 deletions(-) -- 2.20.0 diff --git a/arch/Kconfig b/arch/Kconfig index 9092e0ffe4d3..23ee740182aa 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -763,14 +763,6 @@ config OLD_SIGACTION config COMPAT_OLD_SIGACTION bool -config 64BIT_TIME - def_bool y - help - This should be selected by all architectures that need to support - new system calls with a 64-bit time_t. This is relevant on all 32-bit - architectures, and 64-bit architectures as part of compat syscall - handling. - config COMPAT_32BIT_TIME def_bool !64BIT || COMPAT help diff --git a/fs/aio.c b/fs/aio.c index 3490d1fa0e16..b1b949ae1a93 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -2057,7 +2057,7 @@ static long do_io_getevents(aio_context_t ctx_id, * specifies an infinite timeout. Note that the timeout pointed to by * timeout is relative. Will fail with -ENOSYS if not implemented. */ -#if !defined(CONFIG_64BIT_TIME) || defined(CONFIG_64BIT) +#ifdef CONFIG_64BIT SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id, long, min_nr, diff --git a/ipc/syscall.c b/ipc/syscall.c index 581bdff4e7c5..dfb0e988d542 100644 --- a/ipc/syscall.c +++ b/ipc/syscall.c @@ -30,7 +30,7 @@ int ksys_ipc(unsigned int call, int first, unsigned long second, return ksys_semtimedop(first, (struct sembuf __user *)ptr, second, NULL); case SEMTIMEDOP: - if (IS_ENABLED(CONFIG_64BIT) || !IS_ENABLED(CONFIG_64BIT_TIME)) + if (IS_ENABLED(CONFIG_64BIT)) return ksys_semtimedop(first, ptr, second, (const struct __kernel_timespec __user *)fifth); else if (IS_ENABLED(CONFIG_COMPAT_32BIT_TIME)) diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c index 41dfff23c1f9..61f03faf783a 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c @@ -1749,7 +1749,7 @@ long hrtimer_nanosleep(const struct timespec64 *rqtp, return ret; } -#if !defined(CONFIG_64BIT_TIME) || defined(CONFIG_64BIT) +#ifdef CONFIG_64BIT SYSCALL_DEFINE2(nanosleep, struct __kernel_timespec __user *, rqtp, struct __kernel_timespec __user *, rmtp) diff --git a/kernel/time/time.c b/kernel/time/time.c index 74105fa3ce80..a4c72577aa92 100644 --- a/kernel/time/time.c +++ b/kernel/time/time.c @@ -264,7 +264,7 @@ COMPAT_SYSCALL_DEFINE2(settimeofday, struct old_timeval32 __user *, tv, } #endif -#if !defined(CONFIG_64BIT_TIME) || defined(CONFIG_64BIT) +#ifdef CONFIG_64BIT SYSCALL_DEFINE1(adjtimex, struct __kernel_timex __user *, txc_p) { struct __kernel_timex txc; /* Local copy of parameter */ @@ -871,7 +871,7 @@ int get_timespec64(struct timespec64 *ts, ts->tv_sec = kts.tv_sec; /* Zero out the padding for 32 bit systems or in compat mode */ - if (IS_ENABLED(CONFIG_64BIT_TIME) && in_compat_syscall()) + if (in_compat_syscall()) kts.tv_nsec &= 0xFFFFFFFFUL; ts->tv_nsec = kts.tv_nsec; diff --git a/net/socket.c b/net/socket.c index a180e1a9ff23..2ff80e03d97b 100644 --- a/net/socket.c +++ b/net/socket.c @@ -2787,7 +2787,7 @@ SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args) a[2], true); break; case SYS_RECVMMSG: - if (IS_ENABLED(CONFIG_64BIT) || !IS_ENABLED(CONFIG_64BIT_TIME)) + if (IS_ENABLED(CONFIG_64BIT)) err = __sys_recvmmsg(a0, (struct mmsghdr __user *)a1, a[2], a[3], (struct __kernel_timespec __user *)a[4],