Re: [PATCH] s390: disable postinit-readonly for now

From: Kees Cook
Date: Mon Mar 21 2016 - 15:33:46 EST


On Thu, Mar 17, 2016 at 1:49 AM, Heiko Carstens
<heiko.carstens@xxxxxxxxxx> wrote:
> On Wed, Mar 16, 2016 at 08:47:44PM +0100, Christian Borntraeger wrote:
>> On 03/10/2016 06:31 PM, Kees Cook wrote:
>> > This is a temporary fix to let lkdtm run again on s390, though it'll
>> > still fail the ro_after_init tests. Until rodata and ro_after_init
>> > sections can be split on s390, disable special handling of ro_after_init.
>> >
>> > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx>
>> > ---
>> > for -next ...
>>
>> Given that the other patches are already merged in linus master via Ingo,
>> do you want this to go via Ingo as well?
>
> Let's route this via the s390 tree. I will add another patch to get rid of
> the bogus "This architecture does not have kernel memory protection."
> message printed to the console, just like parisc.

Yeah, we need to identify the 4 cases we have:

1- no memory protection
2- .rodata is ro after init (implements mark_rodata_ro(), can do
__ro_after_init)
3- .rodata is ro before init only and has no __ro_after_init
4- .rodata is ro before init and implements mark_rodata_ro() for __ro_after_init

What I have it reporting is misleading; I wrote it with ARM in mind
("1" without correct CONFIGs), rather than s390 and parisc ("3").

-Kees

>
>> > ---
>> > arch/s390/include/asm/cache.h | 3 +++
>> > 1 file changed, 3 insertions(+)
>> >
>> > diff --git a/arch/s390/include/asm/cache.h b/arch/s390/include/asm/cache.h
>> > index 4d7ccac5fd1d..22da3b34c655 100644
>> > --- a/arch/s390/include/asm/cache.h
>> > +++ b/arch/s390/include/asm/cache.h
>> > @@ -15,4 +15,7 @@
>> >
>> > #define __read_mostly __attribute__((__section__(".data..read_mostly")))
>> >
>> > +/* Read-only memory is marked before mark_rodata_ro() is called. */
>> > +#define __ro_after_init __read_mostly
>> > +
>



--
Kees Cook
Chrome OS & Brillo Security