From: Anthony PERARD <anthony.perard@citrix.com>
To: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Juergen Gross <jgross@suse.com>,
Stefano Stabellini <sstabellini@kernel.org>,
qemu-devel@nongnu.org, Ross Lagerwall <ross.lagerwall@citrix.com>,
xen-devel@lists.xenproject.org, xen-devel@nongnu.org
Subject: Re: [PATCH 3/8] xen: defer call to xen_restrict until after os_setup_post
Date: Mon, 9 Oct 2017 16:50:44 +0100 [thread overview]
Message-ID: <20171009155044.GC1771@perard.uk.xensource.com> (raw)
In-Reply-To: <1507133891-26013-4-git-send-email-ian.jackson@eu.citrix.com>
On Wed, Oct 04, 2017 at 05:18:06PM +0100, Ian Jackson wrote:
> We need to restrict *all* the control fds that qemu opens. Looking in
> /proc/PID/fd shows there are many; their allocation seems scattered
> throughout Xen support code in qemu.
>
> We must postpone the restrict call until roughly the same time as qemu
> changes its uid, chroots (if applicable), and so on.
>
> There doesn't seem to be an appropriate hook already. The RunState
> change hook fires at different times depending on exactly what mode
> qemu is operating in.
>
> And it appears that no-one but the Xen code wants a hook at this phase
> of execution. So, introduce a bare call to a new function
> xen_setup_post, just after os_setup_post. Also provide the
> appropriate stub for when Xen compilation is disabled.
>
> Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
> ---
> hw/i386/xen/xen-hvm.c | 8 --------
> hw/xen/xen-common.c | 13 +++++++++++++
> include/sysemu/sysemu.h | 2 ++
> stubs/xen-hvm.c | 5 +++++
> vl.c | 1 +
> 5 files changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index d9ccd5d..7b60ec6 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -1254,14 +1254,6 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory)
> goto err;
> }
>
> - if (xen_domid_restrict) {
> - rc = xen_restrict(xen_domid);
> - if (rc < 0) {
> - error_report("failed to restrict: error %d", errno);
> - goto err;
> - }
> - }
> -
> xen_create_ioreq_server(xen_domid, &state->ioservid);
>
> state->exit.notify = xen_exit_notifier;
> diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
> index 632a938..4056420 100644
> --- a/hw/xen/xen-common.c
> +++ b/hw/xen/xen-common.c
> @@ -117,6 +117,19 @@ static void xen_change_state_handler(void *opaque, int running,
> }
> }
>
> +void xen_setup_post(void)
> +{
> + int rc;
We probably want to check here if Xen is enable (via xen_enabled()).
xen_domid_restrict could be true when Xen is not used, even if it does
not make sense to use -xen-domid-restrict in that case.
> + if (xen_domid_restrict) {
> + rc = xen_restrict(xen_domid);
> + if (rc < 0) {
> + perror("xen: failed to restrict");
> + exit(1);
> + }
> + }
> +}
> +
> static int xen_init(MachineState *ms)
> {
> xen_xc = xc_interface_open(0, 0, 0);
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index b213696..b064a55 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -93,6 +93,8 @@ void qemu_remove_machine_init_done_notifier(Notifier *notify);
>
> void qemu_announce_self(void);
>
> +void xen_setup_post(void);
> +
> extern int autostart;
>
> typedef enum {
> diff --git a/stubs/xen-hvm.c b/stubs/xen-hvm.c
> index 3ca6c51..9701feb 100644
> --- a/stubs/xen-hvm.c
> +++ b/stubs/xen-hvm.c
> @@ -13,6 +13,7 @@
> #include "hw/xen/xen.h"
> #include "exec/memory.h"
> #include "qmp-commands.h"
> +#include "sysemu/sysemu.h"
>
> int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
> {
> @@ -61,3 +62,7 @@ void xen_hvm_init(PCMachineState *pcms, MemoryRegion **ram_memory)
> void qmp_xen_set_global_dirty_log(bool enable, Error **errp)
> {
> }
> +
> +void xen_setup_post(void)
> +{
> +}
> diff --git a/vl.c b/vl.c
> index fb1f05b..9e7d541 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -4793,6 +4793,7 @@ int main(int argc, char **argv, char **envp)
> }
>
> os_setup_post();
> + xen_setup_post();
>
> main_loop();
> replay_disable_events();
> --
> 2.1.4
>
--
Anthony PERARD
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-10-09 15:52 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-04 16:18 [PATCH v2 0/*] xen: xen-domid-restrict improvements Ian Jackson
2017-10-04 16:18 ` [PATCH 1/8] xen: link against xentoolcore Ian Jackson
2017-10-04 16:18 ` [PATCH 2/8] xen: restrict: use xentoolcore_restrict_all Ian Jackson
2017-10-04 16:18 ` [PATCH 3/8] xen: defer call to xen_restrict until after os_setup_post Ian Jackson
2017-10-09 15:50 ` Anthony PERARD [this message]
2017-10-09 16:58 ` Ian Jackson
2017-10-10 11:40 ` Anthony PERARD
2017-10-10 17:16 ` Ian Jackson
2017-10-09 17:00 ` Ian Jackson
2017-10-04 16:18 ` [PATCH 4/8] xen: destroy_hvm_domain: Move reason into a variable Ian Jackson
2017-10-04 16:18 ` [PATCH 5/8] xen: move xc_interface compatibility fallback further up the file Ian Jackson
2017-10-04 16:18 ` [PATCH 6/8] xen: destroy_hvm_domain: Try xendevicemodel_shutdown Ian Jackson
2017-10-04 16:18 ` [PATCH 7/8] os-posix: Provide new -runasid option Ian Jackson
2017-10-06 12:47 ` Ross Lagerwall
2017-10-06 14:24 ` Ian Jackson
2017-10-06 14:39 ` Ian Jackson
2017-10-06 12:59 ` [Qemu-devel] " Peter Maydell
2017-10-06 14:24 ` Ian Jackson
2017-10-06 14:39 ` Ian Jackson
2017-10-09 5:46 ` Markus Armbruster
2017-10-09 15:05 ` Ian Jackson
2017-10-09 15:24 ` Daniel P. Berrange
2017-10-09 16:52 ` Ian Jackson
2017-10-09 16:59 ` Ian Jackson
2017-10-10 7:43 ` Markus Armbruster
2017-10-10 17:11 ` Ian Jackson
2017-10-11 9:52 ` Ian Jackson
2017-10-09 15:14 ` Ian Jackson
2017-10-04 16:18 ` [PATCH 8/8] RFC configure: do_compiler: Dump some extra info under bash Ian Jackson
2017-10-06 12:58 ` [PATCH v2 0/*] xen: xen-domid-restrict improvements Ross Lagerwall
2017-10-06 13:19 ` Paul Durrant
2017-10-10 13:40 ` Ross Lagerwall
2017-10-10 17:21 ` Ian Jackson
2017-10-06 14:17 ` Ian Jackson
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=20171009155044.GC1771@perard.uk.xensource.com \
--to=anthony.perard@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jgross@suse.com \
--cc=qemu-devel@nongnu.org \
--cc=ross.lagerwall@citrix.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
--cc=xen-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).