Date: Sun, 29 Nov 2015 19:05:52 +0100 From: Mathias Krause <minipli@...glemail.com> To: Ingo Molnar <mingo@...nel.org> Cc: PaX Team <pageexec@...email.hu>, Linus Torvalds <torvalds@...ux-foundation.org>, kernel-hardening@...ts.openwall.com, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, Kees Cook <keescook@...omium.org>, Andy Lutomirski <luto@...capital.net>, Ingo Molnar <mingo@...hat.com>, Thomas Gleixner <tglx@...utronix.de>, "H. Peter Anvin" <hpa@...or.com>, x86-ml <x86@...nel.org>, Arnd Bergmann <arnd@...db.de>, Michael Ellerman <mpe@...erman.id.au>, linux-arch@...r.kernel.org, Emese Revfy <re.emese@...il.com> Subject: Re: [PATCH 0/2] introduce post-init read-only memory On 29 November 2015 at 16:39, Ingo Molnar <mingo@...nel.org> wrote: > > * PaX Team <pageexec@...email.hu> wrote: > >> On 29 Nov 2015 at 9:08, Ingo Molnar wrote: >> >> > >> > * PaX Team <pageexec@...email.hu> wrote: >> > >> > > i don't see the compile time vs. runtime detection as 'competing' approaches, >> > > both have their own role. [...] >> > >> > That's true - but only as long as 'this can be solved in tooling!' is not used as >> > an excuse to oppose the runtime solution and we end up doing neither. >> >> actually, i already voiced my opinion elsewhere in the constify thread on the >> kernel hardening list that adding/using __read_only is somewhat premature >> without also adding the compile time verification part (as part of the constify >> plugin for example). right now its use on the embedded vdso image is simple and >> easy to verify but once people begin to add it to variables that the compiler >> knows and cares about (say, the ops structures) then things can become fragile >> without compile checking. so yes, i'd also advise to get such tooling in >> *before* more __read_only usage is added. > > I think you are mistaken there: if we add the page fault fixup to make sure we > don't crash if a read-only variable is accessed, then we'll have most of the > benefits of read-only mappings and no fragility - without having to wait for > tooling. I guess the point PaX Team (and me earlier in this thread) wanted to make is that having misuse detection *only* at run-time will make those kind of bugs visible too late -- as late as on the wrong write attempt actually happening. It would be much better to have the compiler complain about invalid write statements already during compilation, much like it does when one wants to assign some value to a const object. Having the page fault handler being able to recover from __ro_after_init faults is a nice feature to support users, actually being able to report bugs. But it shouldn't be the only way to detect those kinds of bugs. In fact, we've tools in our toolchain that try to detect and flag wrong usage of __init / __exit, so why not cover __ro_after_init as well? Admitted, that won't be possible with modpost in its current state, but would require a compiler extension instead. Its current non-existence shouldn't be a show-stopper for __ro_after_init but the very next step to take care of before extending the usage of that annotation. Just my 2ct, Mathias
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.