[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86: tighten MMU_*PT_UPDATE* check and combine error paths
commit f55d5c074676cf281b1e3e8f43f519a4f6cc7f58 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Tue Dec 5 17:23:18 2017 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Dec 5 17:23:18 2017 +0100 x86: tighten MMU_*PT_UPDATE* check and combine error paths Don't accept anything other than r/w RAM pages as page table pages and move the paged-out check into the (unlikely) error path following that check. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/mm.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index f61fe25..3c84ae8 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3627,18 +3627,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) ) - { - ASSERT(!page); - p2m_mem_paging_populate(pt_owner, gmfn); - rc = -ENOENT; - break; - } - - if ( unlikely(!page) ) + if ( unlikely(!page) || p2mt != p2m_ram_rw ) { - 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; } -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |