|
Message-ID: <CALCETrUDt4v3=FqD+vseGTKTuG=qY+1LwRPrOrU8C7vCVbo=uA@mail.gmail.com> Date: Tue, 25 Jun 2019 14:49:27 -0700 From: Andy Lutomirski <luto@...nel.org> To: Florian Weimer <fweimer@...hat.com> Cc: Andy Lutomirski <luto@...nel.org>, Thomas Gleixner <tglx@...utronix.de>, Linux API <linux-api@...r.kernel.org>, Kernel Hardening <kernel-hardening@...ts.openwall.com>, linux-x86_64@...r.kernel.org, linux-arch <linux-arch@...r.kernel.org>, Kees Cook <keescook@...omium.org>, "Carlos O'Donell" <carlos@...hat.com>, X86 ML <x86@...nel.org> Subject: Re: Detecting the availability of VSYSCALL On Tue, Jun 25, 2019 at 1:47 PM Florian Weimer <fweimer@...hat.com> wrote: > > * Andy Lutomirski: > > >> We want binaries that run fast on VSYSCALL kernels, but can fall back to > >> full system calls on kernels that do not have them (instead of > >> crashing). > > > > Define "VSYSCALL kernels." On any remotely recent kernel (*all* new > > kernels and all kernels for the last several years that haven't > > specifically requested vsyscall=native), using vsyscalls is much, much > > slower than just doing syscalls. I know a way you can tell whether > > vsyscalls are fast, but it's unreliable, and I'm disinclined to > > suggest it. There are also at least two pending patch series that > > will interfere. > > The fast path is for the benefit of the 2.6.32-based kernel in Red Hat > Enterprise Linux 6. It doesn't have the vsyscall emulation code yet, I > think. > > My hope is to produce (statically linked) binaries that run as fast on > that kernel as they run today, but can gracefully fall back to something > else on kernels without vsyscall support. > > >> We could parse the vDSO and prefer the functions found there, but this > >> is for the statically linked case. We currently do not have a (minimal) > >> dynamic loader there in that version of the code base, so that doesn't > >> really work for us. > > > > Is anything preventing you from adding a vDSO parser? I wrote one > > just for this type of use: > > > > $ wc -l tools/testing/selftests/vDSO/parse_vdso.c > > 269 tools/testing/selftests/vDSO/parse_vdso.c > > > > (289 lines includes quite a bit of comment.) > > I'm worried that if I use a custom parser and the binaries start > crashing again because something changed in the kernel (within the scope > permitted by the ELF specification), the kernel won't be fixed. > > That is, we'd be in exactly the same situation as today. With my maintainer hat on, the kernel won't do that. Obviously a review of my parser would be appreciated, but I consider it to be fully supported, just like glibc and musl's parsers are fully supported. Sadly, I *also* consider the version Go forked for a while (now fixed) to be supported. Sigh.
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.