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.