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

From: Waiman Long
Date: Tue Jan 15 2019 - 10:55:05 EST


On 01/15/2019 04:48 AM, Thomas Gleixner wrote:
> 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

Thanks for the advice. Will work on a v2 to be sent out later this week.

Cheers,
Longman