diff options
author | Malcolm Crossley <malcolm.crossley@citrix.com> | 2012-05-01 14:13:58 +0100 |
---|---|---|
committer | Malcolm Crossley <malcolm.crossley@citrix.com> | 2012-05-01 14:13:58 +0100 |
commit | 701b1ae65f434af35334012047686bae16a3b407 (patch) | |
tree | 519d5b4e9d7e37b24cda052fb391c36c968de2dc | |
parent | 340050f7511d733a857c64a6ed07b3568fd0688a (diff) | |
download | xen-701b1ae65f434af35334012047686bae16a3b407.tar.gz xen-701b1ae65f434af35334012047686bae16a3b407.tar.bz2 xen-701b1ae65f434af35334012047686bae16a3b407.zip |
x86-64: Fix memory hotplug epfn upper limit test for updating the compat M2P table
The epfn is being compared to (RDWR_COMPAT_MPT_VIRT_END -
RDWR_COMPAT_MPT_VIRT_START) without a 2 bit shift, resulting in the
epfn being compared to the size of the RDWR_COMPAT_MPT table in bytes
instead of the maximum page frame number that the RDWR_COMPAT_MPT
table can map.
Signed-off-by: Malcolm Crossley <malcolm.crossley@citrix.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
xen-unstable changeset: 25242:b7ce6a88bebb
xen-unstable date: Wed Apr 25 12:35:56 2012 +0200
-rw-r--r-- | xen/arch/x86/x86_64/mm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c index 72cbca4cfd..28cd7b5ac5 100644 --- a/xen/arch/x86/x86_64/mm.c +++ b/xen/arch/x86/x86_64/mm.c @@ -450,7 +450,7 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info) if ((smap > ((RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2)) ) return 0; - if (epfn > (RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START)) + if ( epfn > ((RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2) ) epfn = (RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2; emap = ( (epfn + ((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1 )) & |