[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 |