[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86/EPT: fix pinned cache attribute range checking
commit aaef67041b6974800ab8f421900559db14bb5903 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri May 2 10:50:55 2014 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri May 2 10:50:55 2014 +0200 x86/EPT: fix pinned cache attribute range checking This wasn't done properly by 4d66f069 ("x86: fix pinned cache attribute handling"): The passed in GFN shouldn't be assumed to be order aligned. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Kevin Tian <kevin.tian@xxxxxxxxx> Reviewed-by: Tim Deegan <tim@xxxxxxx> --- xen/arch/x86/hvm/mtrr.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c index 34215f4..98a4f34 100644 --- a/xen/arch/x86/hvm/mtrr.c +++ b/xen/arch/x86/hvm/mtrr.c @@ -590,6 +590,7 @@ int hvm_get_mem_pinned_cacheattr( uint32_t *type) { struct hvm_mem_pinned_cacheattr_range *range; + uint64_t mask = ~(uint64_t)0 << order; int rc = 0; *type = ~0; @@ -602,15 +603,15 @@ int hvm_get_mem_pinned_cacheattr( &d->arch.hvm_domain.pinned_cacheattr_ranges, list ) { - if ( (guest_fn >= range->start) && - (guest_fn + (1UL << order) - 1 <= range->end) ) + if ( ((guest_fn & mask) >= range->start) && + ((guest_fn | ~mask) <= range->end) ) { *type = range->type; rc = 1; break; } - if ( (guest_fn <= range->end) && - (range->start <= guest_fn + (1UL << order) - 1) ) + if ( ((guest_fn & mask) <= range->end) && + (range->start <= (guest_fn | ~mask)) ) { rc = -1; break; -- 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 |