|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |