[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 3/5] x86: don't override INVALID_M2P_ENTRY with SHARED_M2P_ENTRY
While in most cases code ahead of the invocation of set_gpfn_from_mfn() deals with shared pages, at least in set_typed_p2m_entry() I can't spot such handling (it's entirely possible there's code missing there). Let's try to play safe and add an extra check. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- v2: Re-base over set_gpfn_from_mfn() conversion to function. --- a/xen/arch/x86/x86_64/mm.c +++ b/xen/arch/x86/x86_64/mm.c @@ -1485,12 +1485,19 @@ destroy_frametable: void set_gpfn_from_mfn(unsigned long mfn, unsigned long pfn) { - const struct domain *d = page_get_owner(mfn_to_page(_mfn(mfn))); - unsigned long entry = (d && (d == dom_cow)) ? SHARED_M2P_ENTRY : pfn; + unsigned long entry = pfn; if ( unlikely(!machine_to_phys_mapping_valid) ) return; + if ( entry != INVALID_M2P_ENTRY ) + { + const struct domain *d = page_get_owner(mfn_to_page(_mfn(mfn))); + + if ( d && (d == dom_cow) ) + entry = SHARED_M2P_ENTRY; + } + if ( opt_pv32 && mfn < (RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) / 4 ) compat_machine_to_phys_mapping[mfn] = entry;
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |