xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
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

  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).