lkml.org 
[lkml]   [2026]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] x86/xen: Fix a potential problem in xen_e820_resolve_conflicts()
Date
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@suse.com>
---
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 ac8021c3a997..bb95a05259b8 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++;
}
}

--
2.54.0

\
 
 \ /
  Last update: 2026-05-05 10:07    [W:0.115 / U:0.246 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and my Meterkast|Read the blog