Thread (16 messages) flat view 16 messages, 7 authors, 2015-12-09

Re: [PATCH v2 1/4] init: create cmdline param to disable readonly

From: Kees Cook <hidden>
Date: 2015-11-30 22:34:11
Also in: lkml

On Mon, Nov 30, 2015 at 2:24 PM, Russell King - ARM Linux
[off-list ref] wrote:
On Mon, Nov 30, 2015 at 01:52:10PM -0800, Kees Cook wrote:
quoted
On Wed, Nov 25, 2015 at 11:51 PM, Ingo Molnar [off-list ref] wrote:
quoted
* Kees Cook [off-list ref] wrote:
quoted
+#ifdef CONFIG_DEBUG_RODATA
Btw., could you please remove the Kconfig option altogether in an additional patch
and make read-only sections an always-on feature? It has been default-y for years
and all distros have it enabled.
Yeah, this is something I've wanted to do for a while, but I would
point out that only a few architectures have actually implemented it,
and for arm and arm64 it was very recent:
I don't think it can entirely be a kernel command line option.  On ARM,
enabling DEBUG_RODATA has a substantial effect on the size of the kernel
image - we have to pad various sections to 1MB boundaries so we can
set the appropriate permissions.

Forcing this layout on everyone won't work.

What we can do is the half-way house: we can have the kernel command
line option which enables and disables the protections, but the layout
of the kernel image would still need to be controlled by DEBUG_RODATA.
I'm left wondering what the advantage of that would be: it'd end up
offering a suboptimal layout, additional memory usage but without the
benefits of memory protections.
Right, I think it'll be there just as a debugging assist: something
broke with DEBUG_RODATA, let's boot with rodata=off and see what
happens.
The alternative is keeping the kernel in unlinked object form, and
laying out and linking the kernel at boot time, probably in PIC
assembly code.  That's possible but I think is undesirable.

So all in all, I'm in favour of keeping things as they are on ARM.
I've looked at the implementation in ARM again, and I think I see how
it can be improved slightly. I think I named things incorrectly when I
implemented, and I'll be sending a patch to fix that up. In the end,
though, I agree: the thing that is CONFIG_DEBUG_RODATA may change its
name, but on some architectures, there is a cost to using it, so it
needs to remain a CONFIG.

-Kees

-- 
Kees Cook
Chrome OS & Brillo Security
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help