xqemu/hw
Ian Jackson 4564e63f80 xen: defer call to xen_restrict until just before os_setup_post
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 before os_setup_post.  Also provide the
appropriate stub for when Xen compilation is disabled.

We do the restriction before rather than after os_setup_post, because
xen_restrict may need to open /dev/null, and os_setup_post might have
called chroot.

Currently this does not work with migration, because when running as
the Xen device model qemu needs to signal to the toolstack that it is
ready.  It currently does this using xenstore, and for incoming
migration (but not for ordinary startup) that happens after
os_setup_post.

It is correct that this happens late: we want the incoming migration
stream to be processed by a restricted qemu.  The fix for this will be
to do the startup notification a different way, without using
xenstore.  (QMP is probably a reasonable choice.)

So for now this restriction feature cannot be used in conjunction with
migration.  (Note that this is not a regression in this patch, because
previously the -xen-restrict-domid call was, in fact, simply
ineffective!)  We will revisit this in the Xen 4.11 release cycle.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
CC: Paolo Bonzini <pbonzini@redhat.com> (maintainer:X86)
CC: Richard Henderson <rth@twiddle.net> (maintainer:X86)
CC: Eduardo Habkost <ehabkost@redhat.com> (maintainer:X86)
CC: Michael S. Tsirkin <mst@redhat.com> (supporter:PC)
Acked-by: Anthony PERARD <anthony.perard@citrix.com>
2018-04-26 16:29:51 +01:00
..
9pfs 9p: fix leak in synth_name_to_path() 2018-02-19 18:27:32 +01:00
acpi virt_arm: acpi: reuse common build_fadt() 2018-03-13 23:09:50 +02:00
adc Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
alpha hw/alpha/dp264: Use the TYPE_SMC37C669_SUPERIO 2018-03-12 16:12:49 +01:00
arm Remove checks on MAX_SERIAL_PORTS that are just bounds checks 2018-04-26 13:57:00 +01:00
audio hw/audio: Fix crashes when devices are used on ISA bus without DMA 2018-03-26 14:37:13 +02:00
block hw/block/pflash_cfi: fix off-by-one error 2018-04-10 16:33:08 +02:00
bt hw/bt: Replace fprintf(stderr, "*\n" with error_report() 2018-01-22 09:51:00 +01:00
char serial-isa: Use MAX_ISA_SERIAL_PORTS instead of MAX_SERIAL_PORTS 2018-04-26 13:57:00 +01:00
core Use cpu_create(type) instead of cpu_init(cpu_model) 2018-03-19 14:10:36 -03:00
cpu hw: use "qemu/osdep.h" as first #include in source files 2017-12-18 17:07:02 +03:00
cris Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
display secondary-vga: properly close QemuConsole on unplug 2018-03-13 11:17:29 -06:00
dma hw/dma/i82374: Avoid double creation of the 82374 controller 2018-04-09 16:36:39 +02:00
gpio Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
hppa Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
i2c hw/i2c-ddc: Do not fail writes 2018-03-01 11:05:45 +00:00
i386 xen: defer call to xen_restrict until just before os_setup_post 2018-04-26 16:29:51 +01:00
ide macio: fix NULL pointer dereference when issuing IDE trim 2018-03-27 00:38:00 -04:00
input hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h 2018-03-12 16:12:48 +01:00
intc target/arm: Fetch GICv3 state directly from CPUARMState 2018-04-26 11:04:39 +01:00
ipack pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
ipmi qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
isa Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
lm32 Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
m68k Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
mem qmp: distinguish PC-DIMM and NVDIMM in MemoryDeviceInfoList 2018-03-20 03:34:52 +02:00
microblaze Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
mips serial-isa: Use MAX_ISA_SERIAL_PORTS instead of MAX_SERIAL_PORTS 2018-04-26 13:57:00 +01:00
misc Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
moxie Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
net e1000: Choose which set of props to migrate 2018-04-10 11:30:03 +08:00
nios2 Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
nvram Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
openrisc Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
pci virtio,vhost,pci,pc: features, cleanups 2018-03-20 15:48:34 +00:00
pci-bridge virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
pci-host pci: Add support for Designware IP block 2018-03-09 17:09:43 +00:00
pcmcia hw: Clean up includes 2016-01-29 15:07:25 +00:00
ppc vl.c: new function serial_max_hds() 2018-04-26 13:58:29 +01:00
rdma hw/rdma: Fix 32-bit compilation 2018-03-23 18:38:55 +03:00
riscv Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
s390x s390: Ensure IPL from SCSI works as expected 2018-04-09 13:50:31 +02:00
scsi hw/scsi: support SCSI-2 passthrough without PI 2018-04-09 16:36:39 +02:00
sd hw/sd/bcm2835_sdhost: Don't raise spurious interrupts 2018-04-10 13:02:25 +01:00
sh4 Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
smbios Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
sparc Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
sparc64 serial-isa: Use MAX_ISA_SERIAL_PORTS instead of MAX_SERIAL_PORTS 2018-04-26 13:57:00 +01:00
ssi xilinx_spips: Correct SNOOP_NONE state when flushing the txfifo 2018-04-26 11:04:40 +01:00
timer timer/aspeed: fix vmstate version id 2018-04-26 11:04:39 +01:00
tpm tpm: CRB: Enforce locality is requested before processing buffer 2018-03-29 17:41:02 -04:00
tricore hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
unicore32 hw/input/i8042: Extract declarations from i386/pc.h into input/i8042.h 2018-03-12 16:12:48 +01:00
usb usbredir: reorder fields in USBRedirDevice to reduce padding 2018-03-12 11:43:49 +01:00
vfio vfio-ccw: fix memory leaks in vfio_ccw_realize() 2018-04-09 13:50:31 +02:00
virtio vhost: do not verify ring mappings when IOMMU is enabled 2018-04-16 19:11:38 +03:00
watchdog qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
xen xen: defer call to xen_restrict until just before os_setup_post 2018-04-26 16:29:51 +01:00
xenpv hw/xen*: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:46 +01:00
xtensa Change references to serial_hds[] to serial_hd() 2018-04-26 13:57:00 +01:00
Makefile.objs hw/rdma: Add wrappers and macros 2018-02-19 13:03:24 +02:00