|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.5] libxl: Fix if{} nesting in do_pci_remove
On Mon, Jan 05, 2015 at 04:34:36PM +0000, Ian Jackson wrote:
> From: Ian Jackson <iwj@xxxxxxxxxxxxxxxxxxxxxxxx>
>
> do_pci_remove contained this:
>
> if (type == LIBXL_DOMAIN_TYPE_HVM) {
> [stuff]
> } else if (type != LIBXL_DOMAIN_TYPE_PV)
> abort();
> {
>
> This is bizarre, and not correct. The effect is that HVM guests end
> up running both the proper code and that intended for PV guests. This
> causes (amongst other things) trouble when PCI devices are
> hot-unplugged from HVM guests.
>
> This bug was introduced in abfb006f "tools/libxl: explicitly grant
> access to needed I/O-memory ranges".
>
> This is clear candidate for Xen 4.5, being a bugfix to an important
> feature.
>
> Reported-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Tested-by: Robert Hu <robert.hu@xxxxxxxxx>
> CC: Konrad Wilk <konrad.wilk@xxxxxxxxxx>
RElease-Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> CC: Sander Eikelenboom <linux@xxxxxxxxxxxxxx>
> CC: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
> ---
> tools/libxl/libxl_pci.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c
> index 316643c..9ae37fa 100644
> --- a/tools/libxl/libxl_pci.c
> +++ b/tools/libxl/libxl_pci.c
> @@ -1247,9 +1247,9 @@ static int do_pci_remove(libxl__gc *gc, uint32_t domid,
> rc = ERROR_FAIL;
> goto out_fail;
> }
> - } else if (type != LIBXL_DOMAIN_TYPE_PV)
> - abort();
> - {
> + } else {
> + assert(type == LIBXL_DOMAIN_TYPE_PV);
> +
> char *sysfs_path = libxl__sprintf(gc,
> SYSFS_PCI_DEV"/"PCI_BDF"/resource", pcidev->domain,
> pcidev->bus, pcidev->dev,
> pcidev->func);
> FILE *f = fopen(sysfs_path, "r");
> --
> 1.7.10.4
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |