[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] x86_64: Fix off-by-one error setting up the Interrupt Stack Tables



>>> On 09.05.12 at 12:31, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> On Wed, 2012-05-09 at 11:22 +0100, Andrew Cooper wrote:
>> diff -r 8f1e0cc4a507 xen/include/asm-x86/processor.h
>> --- a/xen/include/asm-x86/processor.h
>> +++ b/xen/include/asm-x86/processor.h
>> @@ -424,7 +424,9 @@ struct tss_struct {
>>      union { u64 rsp1, esp1; };
>>      union { u64 rsp2, esp2; };
>>      u64 reserved1;
>> -    u64 ist[7];
>> +    u64 ist[7]; /* Interrupt Stack Table is 1-based so tss->ist[0]
>> +                 * corresponds to an IST value of 1 in an Interrupt
>> +                 * Descriptor */
> 
> Would it be too sneaky to drop "reserved1" and make ist be 8 elements?
> then ist[1] would actually be the slot corresponding to a value of 1 in
> an IDT entry.

While appealing at a first glance, I wouldn't recommend doing so:
Documentation specifies it the way it's defined currently, and Linux
also uses the same definition, so we'd only call for future bugs if
we did it differently in our code.

Jan

>>      u64 reserved2;
>>      u16 reserved3; 




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.