x86/MCFG: fix off-by-one in E820 check

Also adjust the comment ahead of e820_all_mapped() to clarify that the
range is not inclusive at its end.

Reported-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Wei Liu <wl@xen.org>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
This commit is contained in:
Jan Beulich committed 2020-02-18 16:24:24 +01:00
1 parent 89f0b0a0ac
commit a5dccdd866
2 files changed
+4 -3

No files matched your search

+3 -2
View File
@@ -38,7 +38,7 @@ struct e820map e820;
struct e820map __initdata e820_raw;
/*
* This function checks if the entire range <start,end> is mapped with type.
* This function checks if the entire range [start,end) is mapped with type.
*
* Note: this function only works correct if the e820 table is sorted and
* not-overlapping, which is the case
@@ -56,7 +56,8 @@ int __init e820_all_mapped(u64 start, u64 end, unsigned type)
if (ei->addr >= end || ei->addr + ei->size <= start)
continue;
/* if the region is at the beginning of <start,end> we move
/*
* If the region is at the beginning of [start,end) we move
* start to the end of the region since it's ok until there
*/
if (ei->addr <= start)
+1 -1
View File
@@ -337,7 +337,7 @@ static int __init is_mmconf_reserved(
u64 old_size = size;
int valid = 0;
while (!e820_all_mapped(addr, addr + size - 1, E820_RESERVED)) {
while (!e820_all_mapped(addr, addr + size, E820_RESERVED)) {
size >>= 1;
if (size < (16UL<<20))
break;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.