From: Thiago Jung Bauermann <bauerman@linux.ibm.com>
To: Russell Currey <ruscur@russell.cc>
Cc: linuxppc-dev@lists.ozlabs.org, Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [PATCH] powerpc/powernv/idle: Restore IAMR after idle
Date: Thu, 07 Feb 2019 14:37:58 -0200 [thread overview]
Message-ID: <878syrlfnf.fsf@morokweng.localdomain> (raw)
In-Reply-To: <d7e1bb36080c83353525c39c7bcff7bb7046bae0.camel@russell.cc>
Russell Currey <ruscur@russell.cc> writes:
> On Thu, 2019-02-07 at 15:08 +1000, Nicholas Piggin wrote:
>> Russell Currey's on February 6, 2019 4:28 pm:
>> > Without restoring the IAMR after idle, execution prevention on
>> > POWER9
>> > with Radix MMU is overwritten and the kernel can freely execute
>> > userspace without
>> > faulting.
>> >
>> > This is necessary when returning from any stop state that modifies
>> > user
>> > state, as well as hypervisor state.
>> >
>> > To test how this fails without this patch, load the lkdtm driver
>> > and
>> > do the following:
>> >
>> > echo EXEC_USERSPACE > /sys/kernel/debug/provoke-crash/DIRECT
>> >
>> > which won't fault, then boot the kernel with powersave=off, where
>> > it
>> > will fault. Applying this patch will fix this.
>> >
>> > Fixes: 3b10d0095a1e ("powerpc/mm/radix: Prevent kernel execution of
>> > user
>> > space")
>> > Cc: <stable@vger.kernel.org>
>> > Signed-off-by: Russell Currey <ruscur@russell.cc>
>>
>> Good catch and debugging. This really should be a quirk, we don't
>> want
>> to have to restore this thing on a thread switch.
>>
>> Can we put it under a CONFIG option if we're not using IAMR?
>
> I don't exactly know when we do or don't use the IAMR (since the only
> thing I've used it for is radix). When wouldn't we care about
> restoring it on hash?
On hash it's used for memory protection keys (code is in
arch/powerpc/mm/pkeys.c). The kernel doesn't use protection keys, but
userspace apps may use it explicitly via specific syscalls
(pkey_alloc(), pkey_mprotect, pkey_free()).
Also, the kernel may use a protection key if the process does an
mmap(PROT_EXEC).
--
Thiago Jung Bauermann
IBM Linux Technology Center
next prev parent reply other threads:[~2019-02-07 16:40 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-06 6:28 [PATCH] powerpc/powernv/idle: Restore IAMR after idle Russell Currey
2019-02-07 4:29 ` Michael Ellerman
2019-02-07 6:28 ` Russell Currey
2019-02-07 5:08 ` Nicholas Piggin
2019-02-07 6:33 ` Russell Currey
2019-02-07 16:37 ` Thiago Jung Bauermann [this message]
2019-02-07 22:38 ` Russell Currey
2019-02-08 1:04 ` Michael Ellerman
2019-02-19 4:21 ` Nicholas Piggin
2019-02-20 6:04 ` Akshay Adiga
2019-02-20 11:18 ` Russell Currey
2019-02-20 7:15 ` Akshay Adiga
2019-02-20 11:25 ` Russell Currey
2019-02-20 8:58 ` Akshay Adiga
2019-02-20 11:20 ` Russell Currey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878syrlfnf.fsf@morokweng.localdomain \
--to=bauerman@linux.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=npiggin@gmail.com \
--cc=ruscur@russell.cc \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox