Thread (429 messages) 429 messages, 18 authors, 2020-05-15

Re: [PATCH v11 01/12] add support for Clang's Shadow Call Stack (SCS)

From: Will Deacon <will@kernel.org>
Date: 2020-05-04 16:52:38
Also in: lkml

On Mon, Apr 27, 2020 at 01:45:46PM -0700, Sami Tolvanen wrote:
On Fri, Apr 24, 2020 at 12:21:14PM +0100, Will Deacon wrote:
quoted
Also, since you mentioned the lack of redzoning, isn't it a bit dodgy
allocating blindly out of the kmem_cache? It means we don't have a redzone
or a guard page, so if you can trigger something like a recursion bug then
could you scribble past the SCS before the main stack overflows? Would this
clobber somebody else's SCS?
I agree that allocating from a kmem_cache isn't ideal for safety. It's a
compromise to reduce memory overhead.
Do you think it would be a problem if we always allocated a page for the
SCS?
quoted
The vmap version that I asked Sami to drop
is at least better in this regard, although the guard page is at the wrong
end of the stack and we just hope that the allocation below us didn't pass
VM_NO_GUARD. Looks like the same story for vmap stack :/
SCS grows up and the guard page is after the allocation, so how is it at
the wrong end? Am I missing something here?
Sorry, I'd got the SCS upside-down in my head (hey, that second 'S' stands
for 'Stack'!). But I think I'm right about vmap stack, which feels a
little fragile even though it seems to work out today with the very limited
uses of VM_NO_GUARD.
quoted
If we split the pointer in two (base, offset) then we could leave the
base live in the thread_info, not require alignment of the stacks (which
may allow for unconditional redzoning?) and then just update the offset
value on context switch, which could be trivially checked as part of the
existing stack overflow checking on kernel entry.
I sent out v13 with split pointers, but I'm not sure it's convenient to
add an overflow check to kernel_ventry where the VMAP_STACK check is
done. I suppose I could add a check to kernel_entry after we load x18
from tsk. Thoughts?
I'll take a look at v13, since at this stage I'm keen to get something
queued up so that we can use it as a base for further improvements without
you having to repost the whole stack every time.

Cheers,

Will

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help