[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-8.1 v10 12/14] linux-user: Consolidate guest bounds check in
From: |
Richard Henderson |
Subject: |
[PATCH for-8.1 v10 12/14] linux-user: Consolidate guest bounds check in probe_guest_base |
Date: |
Mon, 7 Aug 2023 09:37:03 -0700 |
The three sets of checks are identical, logically.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/elfload.c | 50 +++++++++++++++-----------------------------
1 file changed, 17 insertions(+), 33 deletions(-)
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 400af4a4c0..484ab7131a 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -2527,25 +2527,6 @@ static void pgb_have_guest_base(const char *image_name,
abi_ulong guest_loaddr,
exit(EXIT_FAILURE);
}
- /* Sanity check the guest binary. */
- if (reserved_va) {
- if (guest_hiaddr > reserved_va) {
- error_report("%s: requires more than reserved virtual "
- "address space (0x%" PRIx64 " > 0x%lx)",
- image_name, (uint64_t)guest_hiaddr, reserved_va);
- exit(EXIT_FAILURE);
- }
- } else {
-#if HOST_LONG_BITS < TARGET_ABI_BITS
- if ((guest_hiaddr - guest_base) > ~(uintptr_t)0) {
- error_report("%s: requires more virtual address space "
- "than the host can provide (0x%" PRIx64 ")",
- image_name, (uint64_t)guest_hiaddr + 1 - guest_base);
- exit(EXIT_FAILURE);
- }
-#endif
- }
-
/*
* Expand the allocation to the entire reserved_va.
* Exclude the mmap_min_addr hole.
@@ -2696,13 +2677,6 @@ static void pgb_static(const char *image_name, abi_ulong
orig_loaddr,
uintptr_t offset = 0;
uintptr_t addr;
- if (hiaddr != orig_hiaddr) {
- error_report("%s: requires virtual address space that the "
- "host cannot provide (0x%" PRIx64 ")",
- image_name, (uint64_t)orig_hiaddr + 1);
- exit(EXIT_FAILURE);
- }
-
loaddr &= -align;
if (HI_COMMPAGE) {
/*
@@ -2768,13 +2742,6 @@ static void pgb_reserved_va(const char *image_name,
abi_ulong guest_loaddr,
int flags = MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE;
void *addr, *test;
- if (guest_hiaddr > reserved_va) {
- error_report("%s: requires more than reserved virtual "
- "address space (0x%" PRIx64 " > 0x%lx)",
- image_name, (uint64_t)guest_hiaddr, reserved_va);
- exit(EXIT_FAILURE);
- }
-
/* Widen the "image" to the entire reserved address space. */
pgb_static(image_name, 0, reserved_va, align);
@@ -2801,6 +2768,23 @@ void probe_guest_base(const char *image_name, abi_ulong
guest_loaddr,
/* In order to use host shmat, we must be able to honor SHMLBA. */
uintptr_t align = MAX(SHMLBA, qemu_host_page_size);
+ /* Sanity check the guest binary. */
+ if (reserved_va) {
+ if (guest_hiaddr > reserved_va) {
+ error_report("%s: requires more than reserved virtual "
+ "address space (0x%" PRIx64 " > 0x%lx)",
+ image_name, (uint64_t)guest_hiaddr, reserved_va);
+ exit(EXIT_FAILURE);
+ }
+ } else {
+ if (guest_hiaddr != (uintptr_t)guest_hiaddr) {
+ error_report("%s: requires more virtual address space "
+ "than the host can provide (0x%" PRIx64 ")",
+ image_name, (uint64_t)guest_hiaddr + 1);
+ exit(EXIT_FAILURE);
+ }
+ }
+
if (have_guest_base) {
pgb_have_guest_base(image_name, guest_loaddr, guest_hiaddr, align);
} else if (reserved_va) {
--
2.34.1
- Re: [PATCH for-8.1 v10 04/14] linux-user: Use MAP_FIXED_NOREPLACE for initial image mmap, (continued)
[PATCH for-8.1 v10 03/14] linux-user: Define ELF_ET_DYN_BASE in $guest/target_mman.h, Richard Henderson, 2023/08/07
[PATCH for-8.1 v10 09/14] linux-user: Use zero_bss for PT_LOAD with no file contents too, Richard Henderson, 2023/08/07
[PATCH for-8.1 v10 11/14] linux-user: Remove duplicate CPU_LOG_PAGE from probe_guest_base, Richard Henderson, 2023/08/07
[PATCH for-8.1 v10 13/14] linux-user: Rewrite fixed probe_guest_base, Richard Henderson, 2023/08/07
[PATCH for-8.1 v10 12/14] linux-user: Consolidate guest bounds check in probe_guest_base,
Richard Henderson <=
[PATCH for-8.1 v10 14/14] linux-user: Rewrite non-fixed probe_guest_base, Richard Henderson, 2023/08/07
[PATCH for-8.1 v10 02/14] linux-user: Define TASK_UNMAPPED_BASE in $guest/target_mman.h, Richard Henderson, 2023/08/07
Re: [PATCH for-8.1 v10 00/14] linux-user: image mapping fixes, Alex Bennée, 2023/08/08