underflows. In my case, the underflows occurred with the
first memory descriptor which got trimmed down to a size of 0.
Due to the underflow, this descriptor ended up covering the entire
address-range which in turn caused Bad Things to happen with the
X server.
for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
md = p;
- if ((md->phys_addr <= phys_addr) && (phys_addr <=
- (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1)))
+ if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT))
return md->type;
}
return 0;
for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
md = p;
- if ((md->phys_addr <= phys_addr) && (phys_addr <=
- (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1)))
+ if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT))
return md->attribute;
}
return 0;