VIR_AUTOFREE(char *) linkdev = NULL;
VIR_AUTOFREE(virMacAddrPtr) MAC = NULL;
VIR_AUTOFREE(virMacAddrPtr) adminMAC = NULL;
+ VIR_AUTOPTR(virNetDevVlan) vlan = NULL;
virNetDevVPortProfilePtr virtPort;
- int ret = -1;
int vf = -1;
bool port_profile_associate = false;
- virNetDevVlanPtr vlan = NULL;
/* This is only needed for PCI devices that have been defined
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Interface type hostdev is currently supported on"
" SR-IOV Virtual Functions only"));
- return ret;
+ return -1;
}
if (virHostdevNetDevice(hostdev, 0, &linkdev, &vf) < 0)
- return ret;
+ return -1;
virtPort = virDomainNetGetActualVirtPortProfile(
hostdev->parent.data.net);
if (virtPort) {
- ret = virHostdevNetConfigVirtPortProfile(linkdev, vf, virtPort,
+ return virHostdevNetConfigVirtPortProfile(linkdev, vf, virtPort,
&hostdev->parent.data.net->mac,
NULL,
port_profile_associate);
/* 1) standard location */
if (virNetDevReadNetConfig(linkdev, vf, stateDir,
&adminMAC, &vlan, &MAC) < 0) {
- goto cleanup;
+ return -1;
}
/* 2) "old" (pre-1.2.3 circa 2014) location - whenever we get
if (!(adminMAC || vlan || MAC) && oldStateDir &&
virNetDevReadNetConfig(linkdev, vf, oldStateDir,
&adminMAC, &vlan, &MAC) < 0) {
- goto cleanup;
+ return -1;
}
/* 3) try using the PF's "port 2" netdev as the name of the
if (virHostdevNetDevice(hostdev, 1, &linkdev, &vf) < 0 ||
virNetDevReadNetConfig(linkdev, vf, stateDir,
&adminMAC, &vlan, &MAC) < 0) {
- goto cleanup;
+ return -1;
}
}
ignore_value(virNetDevSetNetConfig(linkdev, vf,
adminMAC, vlan, MAC, true));
- ret = 0;
+ return 0;
}
-
- cleanup:
- virNetDevVlanFree(vlan);
-
- return ret;
}
int
const char *dom_name)
{
virDomainHostdevDefPtr hostdev = NULL;
- virPCIDevicePtr actual = NULL;
size_t i;
int ret = -1;
virObjectLock(mgr->inactivePCIHostdevs);
for (i = 0; i < nhostdevs; i++) {
+ VIR_AUTOPTR(virPCIDevice) actual = NULL;
virDomainHostdevSubsysPCIPtr pcisrc;
hostdev = hostdevs[i];
pcisrc = &hostdev->source.subsys.u.pci;
ret = 0;
cleanup:
- virPCIDeviceFree(actual);
virObjectUnlock(mgr->activePCIHostdevs);
virObjectUnlock(mgr->inactivePCIHostdevs);
return ret;
virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
virSCSIDevicePtr scsi = NULL;
virSCSIDevicePtr tmp = NULL;
- int ret = -1;
if (!(scsi = virSCSIDeviceNew(NULL,
scsihostsrc->adapter, scsihostsrc->bus,
scsihostsrc->target, scsihostsrc->unit,
hostdev->readonly, hostdev->shareable)))
- goto cleanup;
+ return -1;
if ((tmp = virSCSIDeviceListFind(mgr->activeSCSIHostdevs, scsi))) {
if (virSCSIDeviceSetUsedBy(tmp, drv_name, dom_name) < 0) {
virSCSIDeviceFree(scsi);
- goto cleanup;
+ return -1;
}
virSCSIDeviceFree(scsi);
} else {
if (virSCSIDeviceSetUsedBy(scsi, drv_name, dom_name) < 0 ||
virSCSIDeviceListAdd(mgr->activeSCSIHostdevs, scsi) < 0) {
virSCSIDeviceFree(scsi);
- goto cleanup;
+ return -1;
}
}
- ret = 0;
-
- cleanup:
- return ret;
+ return 0;
}
int
{
int ret = -1;
size_t i;
- virMediatedDevicePtr mdev = NULL;
+ VIR_AUTOPTR(virMediatedDevice) mdev = NULL;
if (nhostdevs == 0)
return 0;
ret = 0;
cleanup:
- virMediatedDeviceFree(mdev);
virObjectUnlock(mgr->activeMediatedHostdevs);
return ret;
}
{
virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
virSCSIDevicePtr scsi;
- int ret = -1;
if (hostdev->managed) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("SCSI host device doesn't support managed mode"));
- goto cleanup;
+ return -1;
}
if (!(scsi = virSCSIDeviceNew(NULL,
scsihostsrc->adapter, scsihostsrc->bus,
scsihostsrc->target, scsihostsrc->unit,
hostdev->readonly, hostdev->shareable)))
- goto cleanup;
+ return -1;
if (virSCSIDeviceListAdd(list, scsi) < 0) {
virSCSIDeviceFree(scsi);
- goto cleanup;
+ return -1;
}
- ret = 0;
-
- cleanup:
- return ret;
+ return 0;
}
int
for (i = 0; i < nhostdevs; i++) {
virDomainHostdevDefPtr hostdev = hostdevs[i];
virDomainHostdevSubsysUSBPtr usbsrc = &hostdev->source.subsys.u.usb;
- virUSBDevicePtr usb, tmp;
+ VIR_AUTOPTR(virUSBDevice) usb = NULL;
+ virUSBDevicePtr tmp;
const char *usedby_drvname;
const char *usedby_domname;
* the list which were taken by @name */
tmp = virUSBDeviceListFind(mgr->activeUSBHostdevs, usb);
- virUSBDeviceFree(usb);
if (!tmp) {
VIR_WARN("Unable to find device %03d.%03d "
const char *dom_name)
{
virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
- virSCSIDevicePtr scsi;
+ VIR_AUTOPTR(virSCSIDevice) scsi = NULL;
virSCSIDevicePtr tmp;
if (!(scsi = virSCSIDeviceNew(NULL,
"in list of active SCSI devices",
scsihostsrc->adapter, scsihostsrc->bus,
scsihostsrc->target, scsihostsrc->unit);
- virSCSIDeviceFree(scsi);
return;
}
virSCSIDeviceListDel(mgr->activeSCSIHostdevs, tmp,
drv_name, dom_name);
- virSCSIDeviceFree(scsi);
}
void
int nhostdevs)
{
size_t i;
- virSCSIVHostDevicePtr host, tmp;
-
if (!nhostdevs)
return;
virObjectLock(mgr->activeSCSIVHostHostdevs);
for (i = 0; i < nhostdevs; i++) {
+ VIR_AUTOPTR(virSCSIVHostDevice) host = NULL;
+ virSCSIVHostDevicePtr tmp;
virDomainHostdevDefPtr hostdev = hostdevs[i];
virDomainHostdevSubsysSCSIVHostPtr hostsrc = &hostdev->source.subsys.u.scsi_host;
const char *usedby_drvname;
VIR_WARN("Unable to find device %s "
"in list of active SCSI_host devices",
hostsrc->wwpn);
- virSCSIVHostDeviceFree(host);
virObjectUnlock(mgr->activeSCSIVHostHostdevs);
return;
}
virSCSIVHostDeviceListDel(mgr->activeSCSIVHostHostdevs, tmp);
}
-
- virSCSIVHostDeviceFree(host);
}
virObjectUnlock(mgr->activeSCSIVHostHostdevs);
}
virObjectLock(mgr->activeMediatedHostdevs);
for (i = 0; i < nhostdevs; i++) {
- virMediatedDevicePtr mdev, tmp;
+ VIR_AUTOPTR(virMediatedDevice) mdev = NULL;
+ virMediatedDevicePtr tmp;
virDomainHostdevSubsysMediatedDevPtr mdevsrc;
virDomainHostdevDefPtr hostdev = hostdevs[i];
/* Remove from the list only mdevs assigned to @drv_name/@dom_name */
tmp = virMediatedDeviceListFind(mgr->activeMediatedHostdevs, mdev);
- virMediatedDeviceFree(mdev);
/* skip inactive devices */
if (!tmp)