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

Re: [Xen-devel] Crash with your meltdown patches



>>> On 02.03.18 at 08:44, <JBeulich@xxxxxxxx> wrote:
>>>> On 01.03.18 at 19:23, <jgross@xxxxxxxx> wrote:
>> --- a/xen/arch/x86/smpboot.c
>> +++ b/xen/arch/x86/smpboot.c
>> @@ -747,10 +747,9 @@ static int clone_mapping(const void *ptr,root_pgentry_t 
>> *rpt)
>>      if ( l1e_get_flags(*pl1e) & _PAGE_PRESENT )
>>      {
>>          ASSERT(l1e_get_pfn(*pl1e) == pfn);
>> -        ASSERT(l1e_get_flags(*pl1e) == flags);
>> +        ASSERT((l1e_get_flags(*pl1e) & ~_PAGE_GLOBAL) == flags);
>>      }
>> -    else
>> -        l1e_write(pl1e, l1e_from_pfn(pfn, flags));
>> +    l1e_write(pl1e, l1e_from_pfn(pfn, flags));
> 
> I agree with the change to the ASSERT(), but why the dropping of
> the "else"?

Wait, no, I do not agree: If we change this assertion, we merely
hide a problem elsewhere. We are supposed to only write cloned
page tables here, and all such writes happen with the global bit
clear. Hence if we find an entry with a set global bit, we must be
attempting to modify a non-cloned PTE. I'll have to look into this
more closely.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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