|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [tip: x86/urgent] x86/xen: Fix a potential problem in xen_e820_resolve_conflicts()
The following commit has been merged into the x86/urgent branch of tip: Commit-ID: 5f8719945244dd65b5fa06195f4600db62581610 Gitweb: https://git.kernel.org/tip/5f8719945244dd65b5fa06195f4600db62581610 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Tue, 05 May 2026 10:06:53 +02:00 Committer: Ingo Molnar <mingo@xxxxxxxxxx> CommitterDate: Tue, 05 May 2026 10:17:00 +02:00 x86/xen: Fix a potential problem in xen_e820_resolve_conflicts() When fixing a conflict in xen_e820_resolve_conflicts(), the loop over the E820 map entries needs to be restarted, as the E820 map will have been modified by the fix. Otherwise entries might be skipped by accident. Fixes: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory") Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx Link: https://patch.msgid.link/20260505080653.197775-1-jgross@xxxxxxxx --- arch/x86/xen/setup.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index ac8021c..bb95a05 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c @@ -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++; } }
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |