linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Catalin Marinas <catalin.marinas@arm.com>
To: Mark Brown <broonie@kernel.org>
Cc: "Paul Elliott" <paul.elliott@arm.com>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Andrew Jones" <drjones@redhat.com>,
	"Amit Kachhap" <amit.kachhap@arm.com>,
	"Vincenzo Frascino" <vincenzo.frascino@arm.com>,
	"Will Deacon" <will@kernel.org>,
	linux-arch@vger.kernel.org, "Marc Zyngier" <maz@kernel.org>,
	"Eugene Syromiatnikov" <esyr@redhat.com>,
	"Szabolcs Nagy" <szabolcs.nagy@arm.com>,
	"H . J . Lu " <hjl.tools@gmail.com>,
	"Yu-cheng Yu" <yu-cheng.yu@intel.com>,
	"Kees Cook" <keescook@chromium.org>,
	"Arnd Bergmann" <arnd@arndb.de>, "Jann Horn" <jannh@google.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Kristina Martšenko" <kristina.martsenko@arm.com>,
	"Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	linux-arm-kernel@lists.infradead.org,
	"Florian Weimer" <fweimer@redhat.com>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	"Sudakshina Das" <sudi.das@arm.com>
Subject: Re: [PATCH v8 00/11] arm64: Branch Target Identification support
Date: Thu, 12 Mar 2020 18:42:11 +0000	[thread overview]
Message-ID: <20200312184211.GA3849205@arrakis.emea.arm.com> (raw)
In-Reply-To: <20200311172556.GJ5411@sirena.org.uk>

On Wed, Mar 11, 2020 at 05:25:56PM +0000, Mark Brown wrote:
> On Wed, Mar 11, 2020 at 04:28:58PM +0000, Catalin Marinas wrote:
> > On Tue, Mar 10, 2020 at 12:42:26PM +0000, Mark Brown wrote:
> > > Sorry, I realized thanks to Amit's off-list prompting that I was testing
> > > that I was verifying with the wrong kernel binary here (user error since
> > > it took me a while to sort out uprobes) so this isn't quite right - you
> > > can probe the landing pads with or without this series.
> 
> > Can we not change aarch64_insn_is_nop() to actually return true only for
> > NOP and ignore everything else in the hint space? We tend to re-use the
> > hint instructions for new things in the architecture, so I'd rather
> > white-list what we know we can safely probe than black-listing only some
> > of the hint instructions.
[...]
> > I haven't assessed the effort of doing the above (probably not a lot)
> > but as a short-term workaround we could add the BTI and PAC hint
> > instructions to the aarch64_insn_is_nop() (though my preferred option is
> > the white-list one).
> 
> The only thing I've seen in testing with just NOPs whitelisted is an
> inability to probe the PAC instructions which isn't the best user
> experience, especially since the effect is that the probes get silently
> ignored. This isn't extensive userspace testing though.  Adding
> whitelisting of the BTI and PAC hints would definitely be a safer as a
> first step though.  I can post either version?

I thought BTI and PAC are already whitelisted in mainline as they fall
into the hint space (by whitelisting I mean you can probe them).

I'm trying to understand how the BTI patches affect the current uprobes
support and what is needed. Executing BTI or PCI?SP out of line should
be fine as they don't generate a BTI exception (the BRK doesn't either,
just the normal debug exception).

I think (it needs checking) that BRK preserves the PSTATE.BTYPE in SPSR.
If we probe an instruction in a guarded page and then we single-step it
in a non-guarded page, we'll miss a potential BTI fault. Is this an
issue?

If we are to keep the BTI faulting behaviour, we'd need an additional
xol page, guarded, and to find a way to report the original probed
address of the fault rather than the xol page.

So, IIUC, we don't have an issue with the actual BTI or PACI?SP
instructions but rather the other instructions that would not fault with
the BTI support. While we should try to address this, I think the
important bit now is not to break the existing uprobes support when
running a binary with BTI enabled.

Have I missed anything?

-- 
Catalin

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

  reply	other threads:[~2020-03-12 18:42 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-27 17:44 [PATCH v8 00/11] arm64: Branch Target Identification support Mark Brown
2020-02-27 17:44 ` [PATCH v8 01/11] ELF: UAPI and Kconfig additions for ELF program properties Mark Brown
2020-02-27 17:44 ` [PATCH v8 02/11] ELF: Add ELF program property parsing support Mark Brown
2020-02-27 17:44 ` [PATCH v8 03/11] arm64: Basic Branch Target Identification support Mark Brown
2020-03-11 16:31   ` Catalin Marinas
2020-02-27 17:44 ` [PATCH v8 04/11] elf: Allow arch to tweak initial mmap prot flags Mark Brown
2020-02-27 17:44 ` [PATCH v8 05/11] arm64: elf: Enable BTI at exec based on ELF program properties Mark Brown
2020-02-27 17:44 ` [PATCH v8 06/11] arm64: BTI: Decode BYTPE bits when printing PSTATE Mark Brown
2020-02-27 17:44 ` [PATCH v8 07/11] arm64: unify native/compat instruction skipping Mark Brown
2020-02-27 17:44 ` [PATCH v8 08/11] arm64: traps: Shuffle code to eliminate forward declarations Mark Brown
2020-02-27 17:44 ` [PATCH v8 09/11] arm64: BTI: Reset BTYPE when skipping emulated instructions Mark Brown
2020-02-27 17:44 ` [PATCH v8 10/11] KVM: " Mark Brown
2020-02-27 17:44 ` [PATCH v8 11/11] arm64: mm: Display guarded pages in ptdump Mark Brown
2020-02-28  1:35 ` [PATCH v8 00/11] arm64: Branch Target Identification support Richard Henderson
2020-03-11 19:15   ` Mark Brown
2020-03-06 10:21 ` Catalin Marinas
2020-03-06 10:27 ` Catalin Marinas
2020-03-09 21:05   ` Mark Brown
2020-03-10 12:42     ` Mark Brown
2020-03-11 16:28       ` Catalin Marinas
2020-03-11 17:25         ` Mark Brown
2020-03-12 18:42           ` Catalin Marinas [this message]
2020-03-13 12:59             ` Mark Brown

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=20200312184211.GA3849205@arrakis.emea.arm.com \
    --to=catalin.marinas@arm.com \
    --cc=amit.kachhap@arm.com \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=drjones@redhat.com \
    --cc=esyr@redhat.com \
    --cc=fweimer@redhat.com \
    --cc=hjl.tools@gmail.com \
    --cc=jannh@google.com \
    --cc=keescook@chromium.org \
    --cc=kristina.martsenko@arm.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=paul.elliott@arm.com \
    --cc=peterz@infradead.org \
    --cc=richard.henderson@linaro.org \
    --cc=sudi.das@arm.com \
    --cc=szabolcs.nagy@arm.com \
    --cc=tglx@linutronix.de \
    --cc=vincenzo.frascino@arm.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=will@kernel.org \
    --cc=yu-cheng.yu@intel.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 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).