From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH] target/arm/arm-semi: Don't let the guest close stdin/stdout/stderr
Date: Fri, 24 Jan 2020 19:57:20 +0000 [thread overview]
Message-ID: <87zhec8w67.fsf@linaro.org> (raw)
In-Reply-To: <20200124172954.28481-1-peter.maydell@linaro.org>
Peter Maydell <peter.maydell@linaro.org> writes:
> The guest can use the semihosting API to open a handle
> corresponding to QEMU's own stdin, stdout, or stderr.
> When the guest closes this handle, we should not
> close the underlying host stdin/stdout/stderr
> the way we would do if the handle corresponded to
> a host fd we'd opened on behalf of the guest in SYS_OPEN.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> target/arm/arm-semi.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
> index 788fe61b51a..8718fd01948 100644
> --- a/target/arm/arm-semi.c
> +++ b/target/arm/arm-semi.c
> @@ -403,6 +403,15 @@ static uint32_t host_closefn(ARMCPU *cpu, GuestFD *gf)
> {
> CPUARMState *env = &cpu->env;
>
> + /*
> + * Only close the underlying host fd if it's one we opened on behalf
> + * of the guest in SYS_OPEN.
> + */
> + if (gf->hostfd == STDIN_FILENO ||
> + gf->hostfd == STDOUT_FILENO ||
> + gf->hostfd == STDERR_FILENO) {
> + return 0;
> + }
> return set_swi_errno(env, close(gf->hostfd));
> }
--
Alex Bennée
next prev parent reply other threads:[~2020-01-24 19:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-24 17:29 [PATCH] target/arm/arm-semi: Don't let the guest close stdin/stdout/stderr Peter Maydell
2020-01-24 19:57 ` Alex Bennée [this message]
2020-01-27 7:49 ` Philippe Mathieu-Daudé
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=87zhec8w67.fsf@linaro.org \
--to=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.