On Fri, Aug 18, 2023 at 06:29:54PM +0100, Catalin Marinas wrote:
A related question - it may have been discussed intensively on the x86 thread (I may read it sometime) - why not have the libc map the shadow
Your assumption that this is a single thread feels optimistic there.
stack and pass the pointer/size to clone3()? It saves us from having to guess what the right size we'd need. struct clone_args is extensible.
I can't recall or locate the specific reasoning there right now, perhaps Rick or someone else can? I'd guess there would be compat concerns for things that don't go via libc which would complicate the story with identifying and marking things as GCS/SS safe, it's going to be more robust to just supply a GCS if the process is using it. That said having a default doesn't preclude us using the extensibility to allow userspace directly to control the GCS size, I would certainly be in favour of adding support for that.
(I plan to get back next week to this series, I'll need to read a bit more on the spec)
I've been making changes, mostly in response to your feedback, so there should be a new version on Monday even if not everything is addressed yet.