All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kristina Martsenko <kristina.martsenko@arm.com>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
	Adam Wallis <awallis@codeaurora.org>,
	Amit Kachhap <amit.kachhap@arm.com>,
	Andrew Jones <drjones@redhat.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Christoffer Dall <christoffer.dall@arm.com>,
	Cyrill Gorcunov <gorcunov@gmail.com>,
	Dave P Martin <dave.martin@arm.com>,
	Jacob Bramley <jacob.bramley@arm.com>,
	Kees Cook <keescook@chromium.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 04/13] arm64/kvm: hide ptrauth from guests
Date: Mon, 10 Dec 2018 20:12:54 +0000	[thread overview]
Message-ID: <a2eb07e5-6663-aede-fb75-cc91cf3fffa5@arm.com> (raw)
In-Reply-To: <57966497-d21c-5439-e4ba-d75f5552282f@linaro.org>

On 09/12/2018 14:53, Richard Henderson wrote:
> On 12/7/18 12:39 PM, Kristina Martsenko wrote:
>> From: Mark Rutland <mark.rutland@arm.com>
>>
>> In subsequent patches we're going to expose ptrauth to the host kernel
>> and userspace, but things are a bit trickier for guest kernels. For the
>> time being, let's hide ptrauth from KVM guests.
>>
>> Regardless of how well-behaved the guest kernel is, guest userspace
>> could attempt to use ptrauth instructions, triggering a trap to EL2,
>> resulting in noise from kvm_handle_unknown_ec(). So let's write up a
>> handler for the PAC trap, which silently injects an UNDEF into the
>> guest, as if the feature were really missing.
> 
> Reviewing the long thread that accompanied v5, I thought we were *not* going to
> trap PAuth instructions from the guest.
> 
> In particular, the OS distribution may legitimately be built to include
> hint-space nops.  This includes XPACLRI, which is used by the C++ exception
> unwinder and not controlled by SCTLR_EL1.EnI{A,B}.

The plan was to disable trapping, yes. However, after that thread there
was a retrospective change applied to the architecture, such that the
XPACLRI (and XPACD/XPACI) instructions are no longer trapped by
HCR_EL2.API. (The public documentation on this has not been updated
yet.) This means that no HINT-space instructions should trap anymore.
(The guest is expected to not set SCTLR_EL1.EnI{A,B} since
ID_AA64ISAR1_EL1.{APA,API} read as 0.)

> It seems like the header comment here, and
Sorry, which header comment?

>> +/*
>> + * Guest usage of a ptrauth instruction (which the guest EL1 did not turn into
>> + * a NOP).
>> + */
>> +static int kvm_handle_ptrauth(struct kvm_vcpu *vcpu, struct kvm_run *run)
>> +
> 
> here, need updating.

Changed it to "a trapped ptrauth instruction".

Kristina

WARNING: multiple messages have this Message-ID (diff)
From: Kristina Martsenko <kristina.martsenko@arm.com>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Andrew Jones <drjones@redhat.com>,
	linux-kernel@vger.kernel.org,
	Jacob Bramley <jacob.bramley@arm.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Adam Wallis <awallis@codeaurora.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	Christoffer Dall <christoffer.dall@arm.com>,
	kvmarm@lists.cs.columbia.edu,
	Cyrill Gorcunov <gorcunov@gmail.com>,
	Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>,
	Amit Kachhap <amit.kachhap@arm.com>,
	Dave P Martin <dave.martin@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	Kees Cook <keescook@chromium.org>
Subject: Re: [PATCH v6 04/13] arm64/kvm: hide ptrauth from guests
Date: Mon, 10 Dec 2018 20:12:54 +0000	[thread overview]
Message-ID: <a2eb07e5-6663-aede-fb75-cc91cf3fffa5@arm.com> (raw)
In-Reply-To: <57966497-d21c-5439-e4ba-d75f5552282f@linaro.org>

On 09/12/2018 14:53, Richard Henderson wrote:
> On 12/7/18 12:39 PM, Kristina Martsenko wrote:
>> From: Mark Rutland <mark.rutland@arm.com>
>>
>> In subsequent patches we're going to expose ptrauth to the host kernel
>> and userspace, but things are a bit trickier for guest kernels. For the
>> time being, let's hide ptrauth from KVM guests.
>>
>> Regardless of how well-behaved the guest kernel is, guest userspace
>> could attempt to use ptrauth instructions, triggering a trap to EL2,
>> resulting in noise from kvm_handle_unknown_ec(). So let's write up a
>> handler for the PAC trap, which silently injects an UNDEF into the
>> guest, as if the feature were really missing.
> 
> Reviewing the long thread that accompanied v5, I thought we were *not* going to
> trap PAuth instructions from the guest.
> 
> In particular, the OS distribution may legitimately be built to include
> hint-space nops.  This includes XPACLRI, which is used by the C++ exception
> unwinder and not controlled by SCTLR_EL1.EnI{A,B}.

The plan was to disable trapping, yes. However, after that thread there
was a retrospective change applied to the architecture, such that the
XPACLRI (and XPACD/XPACI) instructions are no longer trapped by
HCR_EL2.API. (The public documentation on this has not been updated
yet.) This means that no HINT-space instructions should trap anymore.
(The guest is expected to not set SCTLR_EL1.EnI{A,B} since
ID_AA64ISAR1_EL1.{APA,API} read as 0.)

> It seems like the header comment here, and
Sorry, which header comment?

>> +/*
>> + * Guest usage of a ptrauth instruction (which the guest EL1 did not turn into
>> + * a NOP).
>> + */
>> +static int kvm_handle_ptrauth(struct kvm_vcpu *vcpu, struct kvm_run *run)
>> +
> 
> here, need updating.

Changed it to "a trapped ptrauth instruction".

Kristina

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2018-12-10 20:12 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-07 18:39 [PATCH v6 00/13] ARMv8.3 pointer authentication userspace support Kristina Martsenko
2018-12-07 18:39 ` Kristina Martsenko
2018-12-07 18:39 ` [PATCH v6 01/13] arm64: add comments about EC exception levels Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-09 14:34   ` Richard Henderson
2018-12-09 14:34     ` Richard Henderson
2018-12-07 18:39 ` [PATCH v6 02/13] arm64: add pointer authentication register bits Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-09 14:24   ` Richard Henderson
2018-12-09 14:24     ` Richard Henderson
2018-12-10 19:54     ` Kristina Martsenko
2018-12-10 19:54       ` Kristina Martsenko
2018-12-10 19:54       ` Kristina Martsenko
2018-12-11 20:08       ` Will Deacon
2018-12-11 20:08         ` Will Deacon
2018-12-11 20:08         ` Will Deacon
2018-12-07 18:39 ` [PATCH v6 03/13] arm64/kvm: consistently handle host HCR_EL2 flags Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-08 10:31   ` Marc Zyngier
2018-12-08 10:31     ` Marc Zyngier
2018-12-08 10:31     ` Marc Zyngier
2018-12-09 14:35   ` Richard Henderson
2018-12-09 14:35     ` Richard Henderson
2018-12-07 18:39 ` [PATCH v6 04/13] arm64/kvm: hide ptrauth from guests Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-08 10:32   ` Marc Zyngier
2018-12-08 10:32     ` Marc Zyngier
2018-12-08 10:32     ` Marc Zyngier
2018-12-09 14:53   ` Richard Henderson
2018-12-09 14:53     ` Richard Henderson
2018-12-09 14:53     ` Richard Henderson
2018-12-10 20:12     ` Kristina Martsenko [this message]
2018-12-10 20:12       ` Kristina Martsenko
2018-12-10 20:22       ` Richard Henderson
2018-12-10 20:22         ` Richard Henderson
2018-12-10 20:30         ` Kristina Martsenko
2018-12-10 20:30           ` Kristina Martsenko
2018-12-19 15:21         ` Peter Maydell
2018-12-19 15:21           ` Peter Maydell
2018-12-07 18:39 ` [PATCH v6 05/13] arm64: Don't trap host pointer auth use to EL2 Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-09 14:54   ` Richard Henderson
2018-12-09 14:54     ` Richard Henderson
2018-12-09 14:54     ` Richard Henderson
2018-12-07 18:39 ` [PATCH v6 06/13] arm64/cpufeature: detect pointer authentication Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-09 14:58   ` Richard Henderson
2018-12-09 14:58     ` Richard Henderson
2018-12-09 14:58     ` Richard Henderson
2018-12-07 18:39 ` [PATCH v6 07/13] arm64: add basic pointer authentication support Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-09 14:59   ` Richard Henderson
2018-12-09 14:59     ` Richard Henderson
2019-01-03 20:29   ` Pavel Machek
2019-01-03 20:29     ` Pavel Machek
2019-01-04  9:21     ` Marc Zyngier
2019-01-04  9:21       ` Marc Zyngier
2019-01-04  9:21       ` Marc Zyngier
2019-01-04  9:33       ` Pavel Machek
2019-01-04  9:33         ` Pavel Machek
2019-01-04 18:02         ` Mark Rutland
2019-01-04 18:02           ` Mark Rutland
2019-01-04 18:02           ` Mark Rutland
2018-12-07 18:39 ` [PATCH v6 08/13] arm64: expose user PAC bit positions via ptrace Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-09 15:03   ` Richard Henderson
2018-12-09 15:03     ` Richard Henderson
2018-12-09 15:03     ` Richard Henderson
2018-12-09 15:41   ` Richard Henderson
2018-12-09 15:41     ` Richard Henderson
2018-12-09 15:41     ` Richard Henderson
2018-12-10 12:03     ` Catalin Marinas
2018-12-10 12:03       ` Catalin Marinas
2018-12-10 14:22       ` Richard Henderson
2018-12-10 14:22         ` Richard Henderson
2018-12-10 14:29         ` Will Deacon
2018-12-10 14:29           ` Will Deacon
2018-12-10 14:29           ` Will Deacon
2018-12-10 16:09           ` Catalin Marinas
2018-12-10 16:09             ` Catalin Marinas
2018-12-07 18:39 ` [PATCH v6 09/13] arm64: perf: strip PAC when unwinding userspace Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39 ` [PATCH v6 10/13] arm64: add prctl control for resetting ptrauth keys Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-12 15:22   ` Dave Martin
2018-12-12 15:22     ` Dave Martin
2018-12-07 18:39 ` [PATCH v6 11/13] arm64: add ptrace regsets for ptrauth key management Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-12 15:23   ` Dave Martin
2018-12-12 15:23     ` Dave Martin
2018-12-07 18:39 ` [PATCH v6 12/13] arm64: enable pointer authentication Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39 ` [PATCH v6 13/13] arm64: docs: document " Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-07 18:39   ` Kristina Martsenko
2018-12-12 19:35 ` [PATCH v6 00/13] ARMv8.3 pointer authentication userspace support Will Deacon
2018-12-12 19:35   ` Will Deacon
2018-12-13 18:01   ` Will Deacon
2018-12-13 18:01     ` Will Deacon

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=a2eb07e5-6663-aede-fb75-cc91cf3fffa5@arm.com \
    --to=kristina.martsenko@arm.com \
    --cc=amit.kachhap@arm.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=awallis@codeaurora.org \
    --cc=catalin.marinas@arm.com \
    --cc=christoffer.dall@arm.com \
    --cc=dave.martin@arm.com \
    --cc=drjones@redhat.com \
    --cc=gorcunov@gmail.com \
    --cc=jacob.bramley@arm.com \
    --cc=keescook@chromium.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=ramana.radhakrishnan@arm.com \
    --cc=richard.henderson@linaro.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will.deacon@arm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.