提交 6e8003ad 编写于 作者: L Laine Stump

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.
上级 c13dddaf
...@@ -1079,6 +1079,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev, ...@@ -1079,6 +1079,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
char *oldDriverPath = NULL; char *oldDriverPath = NULL;
char *oldDriverName = NULL; char *oldDriverName = NULL;
char *path = NULL; /* reused for different purposes */ char *path = NULL; /* reused for different purposes */
const char *newDriverName = NULL;
if (virPCIDriverDir(&stubDriverPath, stubDriverName) < 0 || if (virPCIDriverDir(&stubDriverPath, stubDriverName) < 0 ||
virPCIFile(&driverLink, dev->name, "driver") < 0 || virPCIFile(&driverLink, dev->name, "driver") < 0 ||
...@@ -1092,6 +1093,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev, ...@@ -1092,6 +1093,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
/* The device is already bound to the correct driver */ /* The device is already bound to the correct driver */
VIR_DEBUG("Device %s is already bound to %s", VIR_DEBUG("Device %s is already bound to %s",
dev->name, stubDriverName); dev->name, stubDriverName);
newDriverName = stubDriverName;
result = 0; result = 0;
goto cleanup; goto cleanup;
} }
...@@ -1203,6 +1205,7 @@ remove_id: ...@@ -1203,6 +1205,7 @@ remove_id:
goto cleanup; goto cleanup;
} }
newDriverName = stubDriverName;
result = 0; result = 0;
cleanup: cleanup:
...@@ -1212,6 +1215,11 @@ cleanup: ...@@ -1212,6 +1215,11 @@ cleanup:
VIR_FREE(oldDriverName); VIR_FREE(oldDriverName);
VIR_FREE(path); VIR_FREE(path);
if (newDriverName &&
STRNEQ_NULLABLE(dev->stubDriver, newDriverName)) {
VIR_FREE(dev->stubDriver);
result = VIR_STRDUP(dev->stubDriver, newDriverName);
}
if (result < 0) if (result < 0)
virPCIDeviceUnbindFromStub(dev); virPCIDeviceUnbindFromStub(dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册