Thread (92 messages) 92 messages, 7 authors, 2022-11-22

Re: [PATCH v3 35/37] x86/cet: Add PTRACE interface for CET

From: Peter Zijlstra <peterz@infradead.org>
Date: 2022-11-17 14:15:51
Also in: linux-arch, linux-doc, linux-mm, lkml

On Thu, Nov 17, 2022 at 12:25:16PM +0000, Schimpe, Christina wrote:
quoted
+ Christina

On Tue, 2022-11-15 at 15:43 +0100, Peter Zijlstra wrote:
quoted
On Fri, Nov 04, 2022 at 03:36:02PM -0700, Rick Edgecombe wrote:
quoted
From: Yu-cheng Yu <redacted>

Some applications (like GDB and CRIU) would like to tweak CET state
via ptrace. This allows for existing functionality to continue to
work for seized CET applications. Provide an interface based on the
xsave buffer format of CET, but filter unneeded states to make the
kernel’s job easier.

There is already ptrace functionality for accessing xstate, but this
does not include supervisor xfeatures. So there is not a completely
clear place for where to put the CET state. Adding it to the user
xfeatures regset would complicate that code, as it currently shares
logic with signals which should not have supervisor features.

Don’t add a general supervisor xfeature regset like the user one,
because it is better to maintain flexibility for other supervisor
xfeatures to define their own interface. For example, an xfeature
may decide not to expose all of it’s state to userspace. A lot of
enum values remain to be used, so just put it in dedicated CET
regset.

The only downside to not having a generic supervisor xfeature
regset, is that apps need to be enlightened of any new supervisor
xfeature exposed this way (i.e. they can’t try to have generic
save/restore logic). But maybe that is a good thing, because they
have to think through each new xfeature instead of encountering
issues when new a new supervisor xfeature was added.
Per this argument this should not use the CET XSAVE format and CET
name at all, because that conflates the situation vs IBT. Enabling
that might not want to follow this precedent.
Hmm, we definitely need to be able to set the SSP. Christina, does GDB need
anything else? I thought maybe toggling SHSTK_EN?
In addition to the SSP, we want to write the CET state. For instance for inferior calls,
we want to reset the IBT bits.
This is about Shadow Stack -- IBT is a completely different feature and
not subject of this series.

Also, wth is an inferior call?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help