From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752031AbbCJGHt (ORCPT ); Tue, 10 Mar 2015 02:07:49 -0400 Received: from mail.skyhub.de ([78.46.96.112]:41630 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751343AbbCJGHs (ORCPT ); Tue, 10 Mar 2015 02:07:48 -0400 From: Borislav Petkov To: Ingo Molnar Cc: X86 ML , LKML Subject: [PATCH 2/2] x86/fpu: factor out memset(xstate, 0) in fpu_finit() paths Date: Tue, 10 Mar 2015 07:06:25 +0100 Message-Id: <1425967585-4725-2-git-send-email-bp@alien8.de> X-Mailer: git-send-email 2.2.0.33.gc18b867 In-Reply-To: <1425967585-4725-1-git-send-email-bp@alien8.de> References: <20150309180816.GF9234@pd.tnic> <1425967585-4725-1-git-send-email-bp@alien8.de> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleg Nesterov fx_finit() has 2 users but only fpu_finit() needs to nullify xstate, alloc_bootmem_align() in setup_init_fpu_buf() returns zero-filled memory. And note that both memset()'s look confusing. Yes, offsetof() is 0 for ->fxsave or ->fsave, but it would be more clean to turn them into a single memset() which nullifies fpu->state. Signed-off-by: Oleg Nesterov Acked-by: Rik van Riel Cc: Andy Lutomirski Cc: Linus Torvalds Cc: Tavis Ormandy Cc: Link: http://lkml.kernel.org/r/20150302183257.GC23085@redhat.com Signed-off-by: Borislav Petkov --- arch/x86/include/asm/fpu-internal.h | 1 - arch/x86/kernel/i387.c | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/fpu-internal.h b/arch/x86/include/asm/fpu-internal.h index 61609b963eab..5fa1be21ac2a 100644 --- a/arch/x86/include/asm/fpu-internal.h +++ b/arch/x86/include/asm/fpu-internal.h @@ -135,7 +135,6 @@ static __always_inline __pure bool use_fxsr(void) static inline void fx_finit(struct i387_fxsave_struct *fx) { - memset(fx, 0, xstate_size); fx->cwd = 0x37f; fx->mxcsr = MXCSR_DEFAULT; } diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c index 03cc0add8694..0f3de6674ae3 100644 --- a/arch/x86/kernel/i387.c +++ b/arch/x86/kernel/i387.c @@ -224,11 +224,12 @@ void fpu_finit(struct fpu *fpu) return; } + memset(fpu->state, 0, xstate_size); + if (cpu_has_fxsr) { fx_finit(&fpu->state->fxsave); } else { struct i387_fsave_struct *fp = &fpu->state->fsave; - memset(fp, 0, xstate_size); fp->cwd = 0xffff037fu; fp->swd = 0xffff0000u; fp->twd = 0xffffffffu; -- 2.2.0.33.gc18b867