mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
util: Resolve Coverity FORWARD_NULL
Convert virPCIDriverFile to return the buffer allocated (or not) and make the appropriate check in the caller. Signed-off-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
d7ddb4c2f0
commit
e3939e86ba
@ -215,14 +215,13 @@ virPCIDriverDir(char **buffer, const char *driver)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static char *
|
||||||
virPCIDriverFile(char **buffer, const char *driver, const char *file)
|
virPCIDriverFile(const char *driver, const char *file)
|
||||||
{
|
{
|
||||||
VIR_FREE(*buffer);
|
char *buffer;
|
||||||
|
|
||||||
if (virAsprintf(buffer, PCI_SYSFS "drivers/%s/%s", driver, file) < 0)
|
ignore_value(virAsprintf(&buffer, PCI_SYSFS "drivers/%s/%s", driver, file));
|
||||||
return -1;
|
return buffer;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1126,7 +1125,7 @@ virPCIDeviceUnbindFromStub(virPCIDevicePtr dev)
|
|||||||
goto reprobe;
|
goto reprobe;
|
||||||
|
|
||||||
/* Xen's pciback.ko wants you to use remove_slot on the specific device */
|
/* Xen's pciback.ko wants you to use remove_slot on the specific device */
|
||||||
if (virPCIDriverFile(&path, driver, "remove_slot") < 0)
|
if (!(path = virPCIDriverFile(driver, "remove_slot")))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virFileExists(path) && virFileWriteStr(path, dev->name, 0) < 0) {
|
if (virFileExists(path) && virFileWriteStr(path, dev->name, 0) < 0) {
|
||||||
@ -1148,7 +1147,8 @@ virPCIDeviceUnbindFromStub(virPCIDevicePtr dev)
|
|||||||
* available, then re-probing would just cause the device to be
|
* available, then re-probing would just cause the device to be
|
||||||
* re-bound to the stub.
|
* re-bound to the stub.
|
||||||
*/
|
*/
|
||||||
if (driver && virPCIDriverFile(&path, driver, "remove_id") < 0)
|
VIR_FREE(path);
|
||||||
|
if (driver && !(path = virPCIDriverFile(driver, "remove_id")))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!driver || !virFileExists(drvdir) || virFileExists(path)) {
|
if (!driver || !virFileExists(drvdir) || virFileExists(path)) {
|
||||||
@ -1212,7 +1212,7 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
|
|||||||
* is triggered for such a device, it will also be immediately
|
* is triggered for such a device, it will also be immediately
|
||||||
* bound by the stub.
|
* bound by the stub.
|
||||||
*/
|
*/
|
||||||
if (virPCIDriverFile(&path, stubDriverName, "new_id") < 0)
|
if (!(path = virPCIDriverFile(stubDriverName, "new_id")))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (virFileWriteStr(path, dev->id, 0) < 0) {
|
if (virFileWriteStr(path, dev->id, 0) < 0) {
|
||||||
@ -1239,7 +1239,8 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
|
|||||||
*/
|
*/
|
||||||
if (!virFileLinkPointsTo(driverLink, stubDriverPath)) {
|
if (!virFileLinkPointsTo(driverLink, stubDriverPath)) {
|
||||||
/* Xen's pciback.ko wants you to use new_slot first */
|
/* Xen's pciback.ko wants you to use new_slot first */
|
||||||
if (virPCIDriverFile(&path, stubDriverName, "new_slot") < 0)
|
VIR_FREE(path);
|
||||||
|
if (!(path = virPCIDriverFile(stubDriverName, "new_slot")))
|
||||||
goto remove_id;
|
goto remove_id;
|
||||||
|
|
||||||
if (virFileExists(path) && virFileWriteStr(path, dev->name, 0) < 0) {
|
if (virFileExists(path) && virFileWriteStr(path, dev->name, 0) < 0) {
|
||||||
@ -1251,7 +1252,8 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
|
|||||||
}
|
}
|
||||||
dev->remove_slot = true;
|
dev->remove_slot = true;
|
||||||
|
|
||||||
if (virPCIDriverFile(&path, stubDriverName, "bind") < 0)
|
VIR_FREE(path);
|
||||||
|
if (!(path = virPCIDriverFile(stubDriverName, "bind")))
|
||||||
goto remove_id;
|
goto remove_id;
|
||||||
|
|
||||||
if (virFileWriteStr(path, dev->name, 0) < 0) {
|
if (virFileWriteStr(path, dev->name, 0) < 0) {
|
||||||
@ -1271,7 +1273,8 @@ virPCIDeviceBindToStub(virPCIDevicePtr dev,
|
|||||||
/* If 'remove_id' exists, remove the device id from pci-stub's dynamic
|
/* If 'remove_id' exists, remove the device id from pci-stub's dynamic
|
||||||
* ID table so that 'drivers_probe' works below.
|
* ID table so that 'drivers_probe' works below.
|
||||||
*/
|
*/
|
||||||
if (virPCIDriverFile(&path, stubDriverName, "remove_id") < 0) {
|
VIR_FREE(path);
|
||||||
|
if (!(path = virPCIDriverFile(stubDriverName, "remove_id"))) {
|
||||||
/* We do not remove PCI ID from pci-stub, and we cannot reprobe it */
|
/* We do not remove PCI ID from pci-stub, and we cannot reprobe it */
|
||||||
if (dev->reprobe) {
|
if (dev->reprobe) {
|
||||||
VIR_WARN("Could not remove PCI ID '%s' from %s, and the device "
|
VIR_WARN("Could not remove PCI ID '%s' from %s, and the device "
|
||||||
|
Loading…
Reference in New Issue
Block a user