]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/xen: Fix xen_e820_swap_entry_with_ram()
authorJuergen Gross <jgross@suse.com>
Tue, 5 May 2026 10:24:17 +0000 (12:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Jun 2026 15:46:29 +0000 (17:46 +0200)
[ Upstream commit 28e03f78e69cf6628b81f24777799778528a84c1 ]

When swapping a not page-aligned E820 map entry with RAM, the start
address of the modified entry is calculated wrong (the offset into the
page is subtracted instead of being added to the page address).

Fixes: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory")
Reported-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Message-ID: <20260505102417.208138-1-jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/xen/setup.c

index 3823e52aef523cb307930122686afa0ed1aebb19..6260f65a78c5e59248bbdcbf93467c27c62e8fe7 100644 (file)
@@ -655,7 +655,7 @@ static void __init xen_e820_swap_entry_with_ram(struct e820_entry *swap_entry)
                        /* Fill new entry (keep size and page offset). */
                        entry->type = swap_entry->type;
                        entry->addr = entry_end - swap_size +
-                                     swap_addr - swap_entry->addr;
+                                     swap_entry->addr - swap_addr;
                        entry->size = swap_entry->size;
 
                        /* Convert old entry to RAM, align to pages. */