|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] x86: tighten MMU_*PT_UPDATE* check and combine error paths
>>> On 12.10.17 at 13:31, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 12/10/17 11:01, Jan Beulich wrote:
>> Don't accept anything other than r/w RAM pages and move the paged-out
>> check into the (unlikely) error path following that check.
>>
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>
> How does dom0 boot with this change in place? You appear to have
> prohibited mapping MMIO frames.
The page in question is a page table one, which can't be MMIO.
Dom0 is booting fine.
Jan
>> --- a/xen/arch/x86/mm.c
>> +++ b/xen/arch/x86/mm.c
>> @@ -3507,18 +3507,18 @@ long do_mmu_update(
>> gmfn = req.ptr >> PAGE_SHIFT;
>> page = get_page_from_gfn(pt_owner, gmfn, &p2mt, P2M_ALLOC);
>>
>> - if ( p2m_is_paged(p2mt) )
>> + if ( unlikely(!page) || p2mt != p2m_ram_rw )
>> {
>> - ASSERT(!page);
>> - p2m_mem_paging_populate(pt_owner, gmfn);
>> - rc = -ENOENT;
>> - break;
>> - }
>> -
>> - if ( unlikely(!page) )
>> - {
>> - gdprintk(XENLOG_WARNING,
>> - "Could not get page for normal update\n");
>> + if ( page )
>> + put_page(page);
>> + if ( p2m_is_paged(p2mt) )
>> + {
>> + p2m_mem_paging_populate(pt_owner, gmfn);
>> + rc = -ENOENT;
>> + }
>> + else
>> + gdprintk(XENLOG_WARNING,
>> + "Could not get page for normal update\n");
>> break;
>> }
>>
>>
>>
>>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |