diff options
Diffstat (limited to 'arch/x86/kernel/process.c')
| -rw-r--r-- | arch/x86/kernel/process.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 90ae0ca51083..58ac7be52c7a 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -255,6 +255,18 @@ void arch_setup_new_exec(void)  	/* If cpuid was previously disabled for this task, re-enable it. */  	if (test_thread_flag(TIF_NOCPUID))  		enable_cpuid(); + +	/* +	 * Don't inherit TIF_SSBD across exec boundary when +	 * PR_SPEC_DISABLE_NOEXEC is used. +	 */ +	if (test_thread_flag(TIF_SSBD) && +	    task_spec_ssb_noexec(current)) { +		clear_thread_flag(TIF_SSBD); +		task_clear_spec_ssb_disable(current); +		task_clear_spec_ssb_noexec(current); +		speculation_ctrl_update(task_thread_info(current)->flags); +	}  }  static inline void switch_to_bitmap(struct thread_struct *prev,  |