[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86: prevent PVH Dom0 from having pages with more than one ref
commit 86104258d36a2d3b0c92aabd2147c731b792f501 Author: Roger Pau Monné <roger.pau@xxxxxxxxxx> AuthorDate: Wed Jun 18 15:52:25 2014 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed Jun 18 15:52:25 2014 +0200 x86: prevent PVH Dom0 from having pages with more than one ref On PV guests a reference is taken when a page gets added to the page tables, which makes pages added to the page tables have two references, but this is not suitable for PVH that doesn't use the PVMMU. In the PVH case only one reference has to be taken or else the page would not be freed when the memory of the domain is decreased. Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/domain_build.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c index ba42fc9..d4473c1 100644 --- a/xen/arch/x86/domain_build.c +++ b/xen/arch/x86/domain_build.c @@ -1137,10 +1137,13 @@ int __init construct_dom0( L1_PROT : COMPAT_L1_PROT)); l1tab++; - page = mfn_to_page(mfn); - if ( (page->u.inuse.type_info == 0) && - !get_page_and_type(page, d, PGT_writable_page) ) - BUG(); + if ( !paging_mode_translate(d) ) + { + page = mfn_to_page(mfn); + if ( !page->u.inuse.type_info && + !get_page_and_type(page, d, PGT_writable_page) ) + BUG(); + } } if ( is_pv_32on64_domain(d) ) @@ -1300,7 +1303,7 @@ int __init construct_dom0( if ( get_gpfn_from_mfn(mfn) >= count ) { BUG_ON(is_pv_32bit_domain(d)); - if ( !page->u.inuse.type_info && + if ( !paging_mode_translate(d) && !page->u.inuse.type_info && !get_page_and_type(page, d, PGT_writable_page) ) BUG(); -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |