On Thu, Nov 23, 2023 at 12:17:19PM +0000, Mark Brown wrote:
On Thu, Nov 23, 2023 at 11:28:47AM +0100, Christian Brauner wrote:
On Mon, Nov 20, 2023 at 11:54:30PM +0000, Mark Brown wrote:
Any reasonably maximum that should be assumed here? IOW, what happens if userspace starts specifying 4G shadow_stack_size with each clone3() call for lolz?
I guess we could impose RLIMIT_STACK?
Yeah, that also seems to be what acct_stack_growth() is using.
- } else {
/*
* For CLONE_VFORK the child will share the parents
* shadow stack. Make sure to clear the internal
* tracking of the thread shadow stack so the freeing
* logic run for child knows to leave it alone.
*/
if (clone_flags & CLONE_VFORK) {
shstk->base = 0;
shstk->size = 0;
return 0;
}
Why is the CLONE_VFORK handling only necessary if shadow_stack_size is unset? In general, a comment or explanation on the interaction between CLONE_VFORK and shadow_stack_size would be helpful.
This is the existing implicit behaviour that clone() has, it's current ABI for x86. The intent is that if the user has explicitly configured a shadow stack then we just do whatever they asked us to do, if they
So what I'm asking is: if the calling process is suspended until the child exits or exec's does it make sense for the child to even get a shadow stack? I don't know the answer which is why I'm asking.