|
[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 |