From: Laine Stump Date: Mon, 3 Jun 2013 17:50:42 +0000 (-0400) Subject: pci: update stubDriver name in virPCIDeviceBindToStub X-Git-Tag: v1.1.0-rc2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e8003ad30e939738a5ddfe8b5c87c841c29c2ea;p=thirdparty%2Flibvirt.git pci: update stubDriver name in virPCIDeviceBindToStub If the device is bound to a stub driver different from what is saved in the virPCIDevice's stubDriver attribute, update it. --- diff --git a/src/util/virpci.c b/src/util/virpci.c index aa72d45732..2d18e6625b 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -1079,6 +1079,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev, char *oldDriverPath = NULL; char *oldDriverName = NULL; char *path = NULL; /* reused for different purposes */ + const char *newDriverName = NULL; if (virPCIDriverDir(&stubDriverPath, stubDriverName) < 0 || virPCIFile(&driverLink, dev->name, "driver") < 0 || @@ -1092,6 +1093,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev, /* The device is already bound to the correct driver */ VIR_DEBUG("Device %s is already bound to %s", dev->name, stubDriverName); + newDriverName = stubDriverName; result = 0; goto cleanup; } @@ -1203,6 +1205,7 @@ remove_id: goto cleanup; } + newDriverName = stubDriverName; result = 0; cleanup: @@ -1212,6 +1215,11 @@ cleanup: VIR_FREE(oldDriverName); VIR_FREE(path); + if (newDriverName && + STRNEQ_NULLABLE(dev->stubDriver, newDriverName)) { + VIR_FREE(dev->stubDriver); + result = VIR_STRDUP(dev->stubDriver, newDriverName); + } if (result < 0) virPCIDeviceUnbindFromStub(dev);