Re: [RFC PATCH] x86/speculation: Don't inherit TIF_SSBD on execve()

From: Thomas Gleixner
Date: Tue Jan 15 2019 - 04:48:58 EST


On Mon, 14 Jan 2019, Waiman Long wrote:
> On 01/11/2019 02:52 PM, Thomas Gleixner wrote:
> > On Wed, 19 Dec 2018, Waiman Long wrote:
> >
> >> With the default SPEC_STORE_BYPASS_SECCOMP/SPEC_STORE_BYPASS_PRCTL mode,
> >> the TIF_SSBD bit will be inherited when a new task is fork'ed or cloned.
> >>
> >> As only certain class of applications (like Java) requires disabling
> >> speculative store bypass for security purpose, it may not make sense to
> >> allow the TIF_SSBD bit to be inherited across execve() boundary where the
> >> new application may not need SSBD at all and is probably not aware that
> >> SSBD may have been turned on. This may cause an unnecessary performance
> >> loss of up to 20% in some cases.
> > Lot's of MAY's here. Aside of that this fundamentally changes the
> > behaviour. I'm not really a fan of doing that.
> >
> > If there are good reasons to have a non-inherited variant, then we rather
> > introduce that instead of changing the existing semantics without a way for
> > existing userspace to notice.
>
> I understand your point. How about adding a ",noexec" auxillary option
> to the spec_store_bypass_disable command line to activate this new
> behavior without changing the default. Will that be acceptable?

I'd rather have an explicit PR_SPEC_DISABLE_NOEXEC argument for the PRCTL
so you can decide at the application level what kind of behaviour you want.

Thanks,

tglx