Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932867AbbERUhU (ORCPT ); Mon, 18 May 2015 16:37:20 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:52848 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932359AbbERUhP convert rfc822-to-8bit (ORCPT ); Mon, 18 May 2015 16:37:15 -0400 From: Arnd Bergmann To: y2038@lists.linaro.org Cc: Thorsten Glaser , klibc@zytor.com, libc-alpha@sourceware.org, linux-api@vger.kernel.org, musl@lists.openwall.com, linux-kernel@vger.kernel.org, Rich Felker , cferris@google.com, enh@google.com, "Joseph S. Myers" Subject: Re: [Y2038] [klibc] kernel/libc uapi changes for y2038 Date: Mon, 18 May 2015 22:35:40 +0200 Message-ID: <3622889.d8DplXjbu8@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: References: <2664016.bYZKg6FQqR@wuerfel> <10173485.f8yUt0lQ60@wuerfel> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="utf-8" X-Provags-ID: V03:K0:NvlzkWTsyqPO2TbN1iwfNJy5oxlM5eU+vwPCk7NxxbhA0coXUIX fX7xQI/NudxbMR8579p0+Qd9lYzkvOMIghbT7x67v+Ldqp7RZCBtnjy8gPWvcCUCQkNxQla pebKV8Ph5GY19whhz8wA857WYTImhLxw3y7oE2UM4+7kAN1wA17YkLmvvsppDdmnbqrPGY4 6hQPspgndz5CGm8k8sxlQ== X-UI-Out-Filterresults: notjunk:1; Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2679 Lines: 53 On Monday 18 May 2015 17:03:08 Thorsten Glaser wrote: > >MIPS on the other hand is no more broken than any of the other 32-bit > >ABIs, because it does not use 64-bit __kernel_long_t in its n32 ABI. > > I have heard from a MIPS porter that one of the flavours suffers > from similar problems as x32, just not to that extent. But I > don’t recall my source… MIPS n32 has a lot of the same issues as x86 x32, but I'm pretty sure that the time_t one is not among them. > >ioctls. My plan at this point is to eliminate all uses of time_t in > >the kernel and replace them with time64_t or other safe types. > >This way, we will eventually find all code that passes 32-bit time types > >to user space and can fix it. This will take care of the time_t > >related problems on x32 as well. > > Ah, interesting approach. And existing userspace, as well as new > userspace that does not declare 64-bit time_t readiness, is still > safe on currently-not-broken architectures? So, there’s enough time > to fix this before the various libcs turn that on (and it had better > be fixed by then, because it becomes ABI by then). Nice idea. Correct. Another aspect of the approach I'm taking is that the system-call implementation is shared between the native 64-bit case and the new 32-bit case, while the handling for the existing syscalls on 32-bit architectures is shared with the 32-bit compat code on 64-bit architectures. This means if we introduce a bug in either of them, we will find out very quickly and don't have to wait until people start using 64-bit time_t on 32-bit user land. > I am wondering a bit about the ioctls being hard to find. I have > not much experience with kernel programming, and even less with > Linux than with MS-DOS and BSD, but should not each driver have > a central ioctl entry point, from which it should cast the user > space data into a (possibly locally declared) structure? Yes, that's how it works, but unfortunately we have a few thousand drivers that declare an ioctl function, and I hope to do something better than brute-force search all of them. The other point is that we really need to fix all y2038-related bug in drivers, not just the ones in ioctl. This includes things like file systems storing time in 32-bit units on disk, or drivers trying to measure how much time has elapsed without communicating that value elsewhere, but failing when the time_t number goes negative. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/