From: Russell Currey <ruscur@russell.cc>
To: Christophe Leroy <christophe.leroy@c-s.fr>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [RFC PATCH v2 11/11] powerpc/book3s32: Implement Kernel Userspace Access Protection
Date: Tue, 11 Dec 2018 16:25:07 +1100 [thread overview]
Message-ID: <a6dbd5284d8700d591614481fda242a25ca5a3b5.camel@russell.cc> (raw)
In-Reply-To: <98e37def51328f58d8c2ceb60edd4b3da7b6f2ef.1543356926.git.christophe.leroy@c-s.fr>
On Wed, 2018-11-28 at 09:27 +0000, Christophe Leroy wrote:
> This patch implements Kernel Userspace Access Protection for
> book3s/32.
>
> Due to limitations of the processor page protection capabilities,
> the protection is only against writing. read protection cannot be
> achieved using page protection.
>
> In order to provide the protection, Ku and Ks keys are modified in
> Userspace Segment registers, and different PP bits are used to:
>
> PP01 provides RW for Key 0 and RO for Key 1
> PP10 provides RW for all
> PP11 provides RO for all
>
> Today PP10 is used for RW pages and PP11 for RO pages. This patch
> modifies page protection to PP01 for RW pages.
>
> Then segment registers are set to Ku 0 and Ks 1. When kernel needs
> to write to RW pages, the associated segment register is changed to
> Ks 0 in order to allow write access to the kernel.
>
> In order to avoid having the read all segment registers when
> locking/unlocking the access, some data is kept in the thread_struct
> and saved on stack on exceptions. The field identifies both the
> first unlocked segment and the first segment following the last
> unlocked one. When no segment is unlocked, it contains value 0.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Hey Christophe, I tried to test this and got a machine check after the
kernel starts init.
Vector: 700 (Program Check) at [ef0b5e70]
pc: 00000ca4
lr: b7e1a030
sp: ef0b5f30
msr: 81002
current = 0xef0b8000
pid = 1, comm = init
Testing with mac99 model in qemu.
- Russell
next prev parent reply other threads:[~2018-12-11 5:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-28 9:27 [PATCH v2 01/11] powerpc/mm: Fix reporting of kernel execute faults on the 8xx Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 02/11] powerpc: Add framework for Kernel Userspace Protection Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 03/11] powerpc: Add skeleton for Kernel Userspace Execution Prevention Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 04/11] powerpc/mm: Add a framework for Kernel Userspace Access Protection Christophe Leroy
2018-12-21 5:07 ` Michael Ellerman
2018-12-21 6:48 ` Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 05/11] powerpc/8xx: Add Kernel Userspace Execution Prevention Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 06/11] powerpc/8xx: Add Kernel Userspace Access Protection Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 07/11] powerpc/mm/radix: Use KUEP API for Radix MMU Russell Currey
2018-11-28 9:43 ` Christophe Leroy
2018-11-28 9:46 ` Christophe LEROY
2018-11-28 9:27 ` [RFC PATCH v2 08/11] powerpc/64s: Implement KUAP " Russell Currey
2018-11-28 9:43 ` Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 09/11] powerpc/32: add helper to write into segment registers Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 10/11] powerpc/book3s32: Prepare Kernel Userspace Access Protection Christophe Leroy
2018-11-28 9:27 ` [RFC PATCH v2 11/11] powerpc/book3s32: Implement " Christophe Leroy
2018-12-11 5:25 ` Russell Currey [this message]
2018-12-11 20:46 ` Christophe Leroy
2018-12-23 13:27 ` [v2, 01/11] powerpc/mm: Fix reporting of kernel execute faults on the 8xx Michael Ellerman
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=a6dbd5284d8700d591614481fda242a25ca5a3b5.camel@russell.cc \
--to=ruscur@russell.cc \
--cc=benh@kernel.crashing.org \
--cc=christophe.leroy@c-s.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
/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;
as well as URLs for NNTP newsgroup(s).