All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>,
	qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v2 04/15] target/arm/arm-semi: Make semihosting code hand out its own file descriptors
Date: Mon, 7 Oct 2019 10:09:32 -0400	[thread overview]
Message-ID: <842d1592-1cda-2c58-93bc-ed6391d093b1@linaro.org> (raw)
In-Reply-To: <20190916141544.17540-5-peter.maydell@linaro.org>

On 9/16/19 7:15 AM, Peter Maydell wrote:
> Currently the Arm semihosting code returns the guest file descriptors
> (handles) which are simply the fd values from the host OS or the
> remote gdbstub. Part of the semihosting 2.0 specification requires
> that we implement special handling of opening a ":semihosting-features"
> filename. Guest fds which result from opening the special file
> won't correspond to host fds, so to ensure that we don't end up
> with duplicate fds we need to have QEMU code control the allocation
> of the fd values we give the guest.
> 
> Add in an abstraction layer which lets us allocate new guest FD
> values, and translate from a guest FD value back to the host one.
> This also fixes an odd hole where a semihosting guest could
> use the semihosting API to read, write or close file descriptors
> that it had never allocated but which were being used by QEMU itself.
> (This isn't a security hole, because enabling semihosting permits
> the guest to do arbitrary file access to the whole host filesystem,
> and so should only be done if the guest is completely trusted.)
> 
> Currently the only kind of guest fd is one which maps to a
> host fd, but in a following commit we will add one which maps
> to the :semihosting-features magic data.
> 
> If the guest is migrated with an open semihosting file descriptor
> then subsequent attempts to use the fd will all fail; this is
> not a change from the previous situation (where the host fd
> being used on the source end would not be re-opened on the
> destination end).
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> Change since v1: we mustn't treat the return value of
> arm_gdb_syscall() as being the new fd from gdb, as in
> softmmu mode it is not. So we need a custom callback for open
> that can update the guestfd association.
> ---
>  target/arm/arm-semi.c | 232 +++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 216 insertions(+), 16 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~



  reply	other threads:[~2019-10-07 14:10 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-16 14:15 [Qemu-devel] [PATCH v2 00/15] target/arm: Implement semihosting v2.0 Peter Maydell
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 01/15] target/arm/arm-semi: Capture errno in softmmu version of set_swi_errno() Peter Maydell
2019-10-03 23:24   ` Philippe Mathieu-Daudé
2019-10-04  9:50     ` Peter Maydell
2019-10-07 13:36   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 02/15] target/arm/arm-semi: Always set some kind of errno for failed calls Peter Maydell
2019-10-03 23:27   ` Philippe Mathieu-Daudé
2019-10-07 13:37   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 03/15] target/arm/arm-semi: Correct comment about gdb syscall races Peter Maydell
2019-10-07 14:06   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 04/15] target/arm/arm-semi: Make semihosting code hand out its own file descriptors Peter Maydell
2019-10-07 14:09   ` Richard Henderson [this message]
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 05/15] target/arm/arm-semi: Restrict use of TaskState* Peter Maydell
2019-10-07 14:12   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 06/15] target/arm/arm-semi: Use set_swi_errno() in gdbstub callback functions Peter Maydell
2019-10-03 23:29   ` Philippe Mathieu-Daudé
2019-10-07 14:13   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 07/15] target/arm/arm-semi: Factor out implementation of SYS_CLOSE Peter Maydell
2019-10-03 23:32   ` Philippe Mathieu-Daudé
2019-10-07 14:15   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 08/15] target/arm/arm-semi: Factor out implementation of SYS_WRITE Peter Maydell
2019-10-03 23:33   ` Philippe Mathieu-Daudé
2019-10-07 14:16   ` Richard Henderson
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 09/15] target/arm/arm-semi: Factor out implementation of SYS_READ Peter Maydell
2019-10-03 23:35   ` Philippe Mathieu-Daudé
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 10/15] target/arm/arm-semi: Factor out implementation of SYS_ISTTY Peter Maydell
2019-10-03 23:35   ` Philippe Mathieu-Daudé
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 11/15] target/arm/arm-semi: Factor out implementation of SYS_SEEK Peter Maydell
2019-10-03 23:37   ` Philippe Mathieu-Daudé
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 12/15] target/arm/arm-semi: Factor out implementation of SYS_FLEN Peter Maydell
2019-10-03 23:38   ` Philippe Mathieu-Daudé
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 13/15] target/arm/arm-semi: Implement support for semihosting feature detection Peter Maydell
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 14/15] target/arm/arm-semi: Implement SH_EXT_EXIT_EXTENDED extension Peter Maydell
2019-09-16 14:15 ` [Qemu-devel] [PATCH v2 15/15] target/arm/arm-semi: Implement SH_EXT_STDOUT_STDERR extension Peter Maydell
2019-10-03 13:03 ` [PATCH v2 00/15] target/arm: Implement semihosting v2.0 Peter Maydell

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=842d1592-1cda-2c58-93bc-ed6391d093b1@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.