Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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()

+14 -5
+5 -1
arch/x86/kernel/e820.c
··· 450 450 { 451 451 struct boot_e820_entry *entry = entries; 452 452 453 + /* If there aren't any entries, we'll want to fall back to another source: */ 454 + if (!nr_entries) 455 + return -ENOENT; 456 + 453 457 while (nr_entries) { 454 458 u64 start = entry->addr; 455 459 u64 size = entry->size; ··· 462 458 463 459 /* Ignore the remaining entries on 64-bit overflow: */ 464 460 if (start > end && likely(size)) 465 - return -1; 461 + return -EINVAL; 466 462 467 463 e820__range_add(start, size, type); 468 464
+9 -4
arch/x86/xen/setup.c
··· 695 695 return; 696 696 697 697 end = start + size; 698 - entry = xen_e820_table.entries; 698 + mapcnt = 0; 699 699 700 - for (mapcnt = 0; mapcnt < xen_e820_table.nr_entries; mapcnt++) { 700 + while (mapcnt < xen_e820_table.nr_entries) { 701 + entry = xen_e820_table.entries + mapcnt; 701 702 if (entry->addr >= end) 702 703 return; 703 704 704 705 if (entry->addr + entry->size > start && 705 - entry->type == E820_TYPE_NVS) 706 + entry->type == E820_TYPE_NVS) { 706 707 xen_e820_swap_entry_with_ram(entry); 708 + /* E820 map has been changed, restart loop! */ 709 + mapcnt = 0; 710 + continue; 711 + } 707 712 708 - entry++; 713 + mapcnt++; 709 714 } 710 715 } 711 716