|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 22/27] x86/cpuid: Perform max_leaf calculations in guest_cpuid()
>>> On 05.01.17 at 16:02, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 05/01/17 14:52, Jan Beulich wrote:
>>>>> On 05.01.17 at 15:28, <andrew.cooper3@xxxxxxxxxx> wrote:
>>> What else would you suggest? One way or another (better shown in the
>>> context of the following patch), we need one block per union{} to apply
>>> max_leaf calculations and read the base data from p->$FOO.raw[$IDX].
>> Actually, perhaps a mixture: Inside the default case have
>>
>> if ( leaf == 0x7 )
>> {
>> if ( subleaf > p->feat.max_subleaf )
>> return;
>> }
>> else if ( leaf == 0xd)
>> {
>> if ( subleaf > ARRAY_SIZE(p->xstate.raw) )
>> return;
>> }
>> if ( leaf > p->basic.max_leaf )
>> return;
>>
>> Which (by making the last one if rather than else-if) also fixes an
>> issue I've spotted only now: So far you exclude leaves 7 and 0xd
>> from the basic.max_leaf checking. (And this way that check could
>> also go first.)
>
> Very good point, although I still think I'd still prefer a logic block
> in this form inside a case 0 ... 0x3fffffff to avoid potential leakage
> if other logic changes.
Well, that's certainly fine with me.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |