From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: Ilya Leoshkevich <iii@linux.ibm.com>
Subject: [PULL 03/20] linux-user/x86_64: Allocate vsyscall page as a commpage
Date: Thu, 1 Sep 2022 07:51:51 +0100 [thread overview]
Message-ID: <20220901065210.117081-6-richard.henderson@linaro.org> (raw)
In-Reply-To: <20220901065210.117081-1-richard.henderson@linaro.org>
We're about to start validating PAGE_EXEC, which means that we've
got to mark the vsyscall page executable. We had been special
casing this entirely within translate.
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/elfload.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 29d910c4cc..b20d513929 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -195,6 +195,27 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUX86State *en
(*regs)[26] = tswapreg(env->segs[R_GS].selector & 0xffff);
}
+#if ULONG_MAX >= TARGET_VSYSCALL_PAGE
+#define INIT_GUEST_COMMPAGE
+static bool init_guest_commpage(void)
+{
+ /*
+ * The vsyscall page is at a high negative address aka kernel space,
+ * which means that we cannot actually allocate it with target_mmap.
+ * We still should be able to use page_set_flags, unless the user
+ * has specified -R reserved_va, which would trigger an assert().
+ */
+ if (reserved_va != 0 &&
+ TARGET_VSYSCALL_PAGE + TARGET_PAGE_SIZE >= reserved_va) {
+ error_report("Cannot allocate vsyscall page");
+ exit(EXIT_FAILURE);
+ }
+ page_set_flags(TARGET_VSYSCALL_PAGE,
+ TARGET_VSYSCALL_PAGE + TARGET_PAGE_SIZE,
+ PAGE_EXEC | PAGE_VALID);
+ return true;
+}
+#endif
#else
#define ELF_START_MMAP 0x80000000
@@ -2360,8 +2381,10 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc,
#else
#define HI_COMMPAGE 0
#define LO_COMMPAGE -1
+#ifndef INIT_GUEST_COMMPAGE
#define init_guest_commpage() true
#endif
+#endif
static void pgb_fail_in_use(const char *image_name)
{
--
2.34.1
next prev parent reply other threads:[~2022-09-01 7:06 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-01 6:51 [PULL 00/20] tcg patch queue Richard Henderson
2022-09-01 6:51 ` [PULL 01/20] linux-user/arm: Mark the commpage executable Richard Henderson
2022-09-01 6:51 ` [PULL 1/4] target/avr: Support probe argument to tlb_fill Richard Henderson
2022-09-01 6:51 ` [PULL 02/20] linux-user/hppa: Allocate page zero as a commpage Richard Henderson
2022-09-01 6:51 ` [PULL 2/4] target/avr: Call avr_cpu_do_interrupt directly Richard Henderson
2022-09-01 6:51 ` Richard Henderson [this message]
2022-09-01 6:51 ` [PULL 3/4] target/avr: Only execute one interrupt at a time Richard Henderson
2022-09-01 6:51 ` [PULL 04/20] linux-user: Honor PT_GNU_STACK Richard Henderson
2022-09-01 6:51 ` [PULL 4/4] target/avr: Disable interrupts when env->skip set Richard Henderson
2022-09-01 6:51 ` [PULL 05/20] linux-user: Clear translations on mprotect() Richard Henderson
2022-09-01 6:51 ` [PULL 06/20] tests/tcg/i386: Move smc_code2 to an executable section Richard Henderson
2022-09-01 6:51 ` [PULL 07/20] accel/tcg: Introduce is_same_page() Richard Henderson
2022-09-01 6:51 ` [PULL 08/20] accel/tcg: Properly implement get_page_addr_code for user-only Richard Henderson
2022-09-01 6:51 ` [PULL 09/20] accel/tcg: Unlock mmap_lock after longjmp Richard Henderson
2022-09-01 6:52 ` [PULL 10/20] accel/tcg: Make tb_htable_lookup static Richard Henderson
2022-09-01 6:52 ` [PULL 11/20] accel/tcg: Move qemu_ram_addr_from_host_nofail to physmem.c Richard Henderson
2022-09-01 6:52 ` [PULL 12/20] accel/tcg: Use probe_access_internal for softmmu get_page_addr_code_hostp Richard Henderson
2022-09-01 6:52 ` [PULL 13/20] accel/tcg: Document the faulting lookup in tb_lookup_cmp Richard Henderson
2022-09-01 6:52 ` [PULL 14/20] accel/tcg: Remove translator_ldsw Richard Henderson
2022-09-01 6:52 ` [PULL 15/20] accel/tcg: Add pc and host_pc params to gen_intermediate_code Richard Henderson
2022-09-01 6:52 ` [PULL 16/20] accel/tcg: Add fast path for translator_ld* Richard Henderson
2022-09-01 6:52 ` [PULL 17/20] target/s390x: Make translator stop before the end of a page Richard Henderson
2022-09-01 6:52 ` [PULL 18/20] target/i386: " Richard Henderson
2022-09-01 6:52 ` [PULL 19/20] target/riscv: Add MAX_INSN_LEN and insn_len Richard Henderson
2022-09-01 6:52 ` [PULL 20/20] target/riscv: Make translator stop before the end of a page Richard Henderson
2022-09-01 21:28 ` [PULL 00/20] tcg patch queue Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220901065210.117081-6-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=iii@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).