[PATCH v7 3/7] um: Fix stub_start address calculation
Benjamin Berg
benjamin at sipsolutions.net
Thu Jul 4 09:27:13 PDT 2024
From: Benjamin Berg <benjamin.berg at intel.com>
The calculation was wrong as it only subtracted one and then rounded
down for alignment. However, this is incorrect if host_task_size is not
already aligned.
This probably worked fine because on 64 bit the host_task_size is bigger
than returned by os_get_top_address.
Signed-off-by: Benjamin Berg <benjamin.berg at intel.com>
---
arch/um/kernel/um_arch.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c
index 8e594cda6d77..25cd2c6d7e95 100644
--- a/arch/um/kernel/um_arch.c
+++ b/arch/um/kernel/um_arch.c
@@ -328,7 +328,8 @@ int __init linux_main(int argc, char **argv)
/* reserve a few pages for the stubs (taking care of data alignment) */
/* align the data portion */
BUILD_BUG_ON(!is_power_of_2(STUB_DATA_PAGES));
- stub_start = (host_task_size - 1) & ~(STUB_DATA_PAGES * PAGE_SIZE - 1);
+ stub_start = (host_task_size - STUB_DATA_PAGES * PAGE_SIZE) &
+ ~(STUB_DATA_PAGES * PAGE_SIZE - 1);
/* another page for the code portion */
stub_start -= PAGE_SIZE;
host_task_size = stub_start;
--
2.45.2
More information about the linux-um
mailing list