From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753746AbbESIQG (ORCPT ); Tue, 19 May 2015 04:16:06 -0400 Received: from www.linutronix.de ([62.245.132.108]:53108 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753330AbbESIQD (ORCPT ); Tue, 19 May 2015 04:16:03 -0400 Date: Tue, 19 May 2015 10:16:12 +0200 (CEST) From: Thomas Gleixner To: Dave Hansen cc: linux-kernel@vger.kernel.org, x86@kernel.org, dave.hansen@linux.intel.com, oleg@redhat.com, bp@alien8.de, riel@redhat.com, sbsiddha@gmail.com, luto@amacapital.net, mingo@redhat.com, hpa@zytor.com, fenghua.yu@intel.com Subject: Re: [PATCH 03/19] x86, mpx: Use new get_xsave_field_ptr() In-Reply-To: <20150519062529.63C78F4E@viggo.jf.intel.com> Message-ID: References: <20150519062528.E2D5DDFF@viggo.jf.intel.com> <20150519062529.63C78F4E@viggo.jf.intel.com> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001,URIBL_BLOCKED=0.001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 18 May 2015, Dave Hansen wrote: > From: Dave Hansen > > The MPX registers (bndcsr/bndcfgu/bndstatus) are not directly > accessible via normal instructions. They essentially act as > if they were floating point registers and are saved/restored > along with those registers. > > There are two main paths in the MPX code where we care about > the contents of these registers: > 1. #BR (bounds) faults > 2. the prctl() code where we are setting MPX up > > Both of those paths _might_ be called without the FPU having > been used. That means that 'tsk->thread.fpu.state' might > never be allocated. > > Also, fpu_save_init() is not preempt-safe. It was a bug to > call it without disabling preemption. The new > get_xsave_addr() calls unlazy_fpu() instead and properly > disables preemption. > > Signed-off-by: Dave Hansen Reviewed-by: Thomas Gleixner