mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 00:51:51 -04:00
Merge tag 'x86-urgent-2026-05-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar: - Fix memory map enumeration bug in the Xen e820 parsing code (Juergen Gross) - Re-enable e820 BIOS fallback if e820 table is empty (David Gow) * tag 'x86-urgent-2026-05-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/boot/e820: Re-enable BIOS fallback if e820 table is empty x86/xen: Fix a potential problem in xen_e820_resolve_conflicts()
This commit is contained in:
@@ -450,6 +450,10 @@ __init static int append_e820_table(struct boot_e820_entry *entries, u32 nr_entr
|
||||
{
|
||||
struct boot_e820_entry *entry = entries;
|
||||
|
||||
/* If there aren't any entries, we'll want to fall back to another source: */
|
||||
if (!nr_entries)
|
||||
return -ENOENT;
|
||||
|
||||
while (nr_entries) {
|
||||
u64 start = entry->addr;
|
||||
u64 size = entry->size;
|
||||
@@ -458,7 +462,7 @@ __init static int append_e820_table(struct boot_e820_entry *entries, u32 nr_entr
|
||||
|
||||
/* Ignore the remaining entries on 64-bit overflow: */
|
||||
if (start > end && likely(size))
|
||||
return -1;
|
||||
return -EINVAL;
|
||||
|
||||
e820__range_add(start, size, type);
|
||||
|
||||
|
||||
@@ -695,17 +695,22 @@ static void __init xen_e820_resolve_conflicts(phys_addr_t start,
|
||||
return;
|
||||
|
||||
end = start + size;
|
||||
entry = xen_e820_table.entries;
|
||||
mapcnt = 0;
|
||||
|
||||
for (mapcnt = 0; mapcnt < xen_e820_table.nr_entries; mapcnt++) {
|
||||
while (mapcnt < xen_e820_table.nr_entries) {
|
||||
entry = xen_e820_table.entries + mapcnt;
|
||||
if (entry->addr >= end)
|
||||
return;
|
||||
|
||||
if (entry->addr + entry->size > start &&
|
||||
entry->type == E820_TYPE_NVS)
|
||||
entry->type == E820_TYPE_NVS) {
|
||||
xen_e820_swap_entry_with_ram(entry);
|
||||
/* E820 map has been changed, restart loop! */
|
||||
mapcnt = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
entry++;
|
||||
mapcnt++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user