Thread (54 messages) 54 messages, 6 authors, 2023-07-12

Re: [PATCH v9 23/42] Documentation/x86: Add CET shadow stack description

From: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
Date: 2023-06-28 01:23:55
Also in: linux-arch, linux-doc, linux-mm, lkml

On Mon, 2023-06-26 at 15:08 +0100, szabolcs.nagy@arm.com wrote:
The 06/22/2023 16:46, Edgecombe, Rick P wrote:
quoted
You previously said:

On Wed, 2023-06-21 at 12:36 +0100, szabolcs.nagy@arm.com wrote:
quoted
as far as i can tell the current unwinder handles shstk unwinding
correctly across signal handlers (sync or async and
cleanup/exceptions
handlers too), i see no issue with "fixed shadow stack signal
frame
size of 8 bytes" other than future extensions and discontinous
shstk.
I took that to mean that you didn't see how the the existing
unwinder
prevented alt shadow stacks. Hopefully we're all on the same page
now. 
well alt shstk is discontinous.

there were two separate confusions:

- your mention of fnon-call-exception threw me off since that is a
very specific corner case.

- i was talking about an unwind design that can deal with altshstk
which requires ssp switch. (current uwinder does not support this,
but i assumed we can add that now and ignore old broken unwinders).
you are saying that alt shstk support needs additional shstk tokens
in the signal frame to maintain alt shstk state for the kernel.

i think now we are on the same page.
I don't think I fully understand your point still. It would really help
if you could do a levelset summary, like I asked on other branches of
this thread.
quoted
BTW, when alt shadow stack's were POCed, I hadn't encountered this
GCC
behavior yet. So it was assumed it could be bolted on later without
disturbing anything. If Linus or someone wants to say we're ok with
breaking these old GCCs in this way, the first thing I would do
would
be to pad the shadow stack signal frame with room for alt shadow
stack
and more. I actually have a patch to do this, but alas we are
already
pushing it regression wise.
sounds like it will be hard to add alt shstk later.
Adding alt shadow stack without moving the elf bit runs the risk of
regressions because of the old GCCs. But moving the elf bit is easy
(from the technical side at least). There were several threads about
this in the past.

So I don't think any harder than it is now.
(i think maintaining alt shstk state on the stack instead of
shstk should work too. but if that does not work, then alt
shstk will require another abi opt-in.)
The x86 sigframe is pretty full AFAIK. There are already features that
require an opt in. It might be true that the alt shadow stack base and
size don't need to be protected like the previous SSP. I'd have to
think about it. It could be nice to optionally put some IBT stuff on
the shadow stack as well, which would require growing the frame, and at
that point the alt shadow stack stuff might as well go there too.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help