Date: Mon, 18 May 2015 22:35:40 +0200 From: Arnd Bergmann <arnd@...db.de> To: y2038@...ts.linaro.org Cc: Thorsten Glaser <tg@...bsd.de>, klibc@...or.com, libc-alpha@...rceware.org, linux-api@...r.kernel.org, musl@...ts.openwall.com, linux-kernel@...r.kernel.org, Rich Felker <dalias@...c.org>, cferris@...gle.com, enh@...gle.com, "Joseph S. Myers" <joseph@...esourcery.com> Subject: Re: [Y2038] [klibc] kernel/libc uapi changes for y2038 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
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.