Commit 01f9f62d authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Borislav Petkov
Browse files

x86/fpu: Remove pointless memset in fpu_clone()



Zeroing the forked task's FPU registers buffer to avoid leaking init
optimized stale data into the clone is a pointless exercise for the case
where the current task has TIF_NEED_FPU_LOAD set. In that case, the FPU
registers state is copied from current's FPU register buffer which can
contain stale init optimized data as well.

The alledged information leak is non-existant because this stale init
optimized data is used nowhere and cannot leak anywhere.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20211015011538.722854569@linutronix.de
parent dc2f39fd
Loading
Loading
Loading
Loading
+0 −6
Original line number Original line Diff line number Diff line
@@ -259,12 +259,6 @@ int fpu_clone(struct task_struct *dst)
	if (!cpu_feature_enabled(X86_FEATURE_FPU))
	if (!cpu_feature_enabled(X86_FEATURE_FPU))
		return 0;
		return 0;


	/*
	 * Don't let 'init optimized' areas of the XSAVE area
	 * leak into the child task:
	 */
	memset(&dst_fpu->state.xsave, 0, fpu_kernel_xstate_size);

	/*
	/*
	 * If the FPU registers are not owned by current just memcpy() the
	 * If the FPU registers are not owned by current just memcpy() the
	 * state.  Otherwise save the FPU registers directly into the
	 * state.  Otherwise save the FPU registers directly into the