diff mbox

[2/2] xen-platform: Ensure xen is enabled when initializing

Message ID 1443470484-5389-3-git-send-email-ehabkost@redhat.com
State New
Headers show

Commit Message

Eduardo Habkost Sept. 28, 2015, 8:01 p.m. UTC
The xen-platform code crashes on reset if the xen backend is not
initialized, because it calls xc_hvm_set_mem_type(). Ensure xen-platform
won't be created without initializing the xen backend.

The assert can't be triggered by the user because the device is not
hotpluggable, and the only code creating it (at pc_xen_hvm_init())
already checks xen_enabled().

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 hw/i386/xen/xen_platform.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Stefano Stabellini Sept. 29, 2015, 2:11 p.m. UTC | #1
On Mon, 28 Sep 2015, Eduardo Habkost wrote:
> The xen-platform code crashes on reset if the xen backend is not
> initialized, because it calls xc_hvm_set_mem_type(). Ensure xen-platform
> won't be created without initializing the xen backend.
> 
> The assert can't be triggered by the user because the device is not
> hotpluggable, and the only code creating it (at pc_xen_hvm_init())
> already checks xen_enabled().
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>

Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

>  hw/i386/xen/xen_platform.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
> index ee45f03..8682c42 100644
> --- a/hw/i386/xen/xen_platform.c
> +++ b/hw/i386/xen/xen_platform.c
> @@ -387,6 +387,9 @@ static int xen_platform_initfn(PCIDevice *dev)
>      PCIXenPlatformState *d = XEN_PLATFORM(dev);
>      uint8_t *pci_conf;
>  
> +    /* Device will crash on reset if xen is not initialized */
> +    assert(xen_enabled());
> +
>      pci_conf = dev->config;
>  
>      pci_set_word(pci_conf + PCI_COMMAND, PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
> -- 
> 2.1.0
>
diff mbox

Patch

diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c
index ee45f03..8682c42 100644
--- a/hw/i386/xen/xen_platform.c
+++ b/hw/i386/xen/xen_platform.c
@@ -387,6 +387,9 @@  static int xen_platform_initfn(PCIDevice *dev)
     PCIXenPlatformState *d = XEN_PLATFORM(dev);
     uint8_t *pci_conf;
 
+    /* Device will crash on reset if xen is not initialized */
+    assert(xen_enabled());
+
     pci_conf = dev->config;
 
     pci_set_word(pci_conf + PCI_COMMAND, PCI_COMMAND_IO | PCI_COMMAND_MEMORY);