From mboxrd@z Thu Jan 1 00:00:00 1970 From: Josh Triplett Subject: Re: [PATCH 2/3] x86: tss: Eliminate fragile calculation of TSS segment limit Date: Thu, 31 Oct 2013 04:17:43 -0700 Message-ID: <20131031111742.GB25280@leaf> References: <52718DD7.7040905@zytor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <52718DD7.7040905@zytor.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: "H. Peter Anvin" Cc: Alexander van Heukelum , Jeremy Fitzhardinge , Daniel Lezcano , Len Brown , Frederic Weisbecker , "virtualization@lists.linux-foundation.org" , Paul Gortmaker , Raghavendra K T , David Herrmann , Masami Hiramatsu , Seiji Aguchi , Jiri Slaby , Alok Kataria , Jesper Nilsson , Andi Kleen , "x86@kernel.org" , Ingo Molnar , Steven Rostedt , xen-devel@lists.xenproject.org, Borislav Petkov , Fenghua Yu , Kees Cook List-Id: virtualization@lists.linuxfoundation.org On Wed, Oct 30, 2013 at 03:53:11PM -0700, H. Peter Anvin wrote: > On 10/30/2013 03:22 PM, Kees Cook wrote: > >> > >> - /* > >> - * sizeof(unsigned long) coming from an extra "long" at the end > >> - * of the iobitmap. See tss_struct definition in processor.h > >> - * > >> - * -1? seg base+limit should be pointing to the address of the > >> - * last valid byte > > > > I think it might be better to keep at least a minimal comment near the > > TSS_LIMIT declaration, just to explain the "-1" part, which is not > > entirely obvious from just reading the code. > > > > Agreed, although it doesn't need to be an unsigned long at all... the > CPU will only ever access one extra byte past the end. True, but the thing immediately following the iobitmap is a stack, which needs aligning, so the array does need to contain a full additional unsigned long even if the CPU only accesses a byte of it. In any case, that isn't the reason for the -1, just the reason for the sizeof(unsigned long) mentioned in the comment above, which goes away now that TSS_LIMIT uses the offset of the *following* field rather than recalculating the size of the iobitmap. - Josh Triplett