/* remoteDispatchClientRequest will free this. */
char **parent_p;
if (VIR_ALLOC(parent_p) < 0) {
+ virNodeDeviceFree(dev);
remoteDispatchOOMError(rerr);
return -1;
}
*parent_p = strdup(parent);
if (*parent_p == NULL) {
+ virNodeDeviceFree(dev);
remoteDispatchOOMError(rerr);
return -1;
}
ret->num = virNodeDeviceNumOfCaps(dev);
if (ret->num < 0) {
+ virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
return -1;
}
}
if (args->maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX) {
+ virNodeDeviceFree(dev);
remoteDispatchFormatError(rerr,
"%s", _("maxnames > REMOTE_NODE_DEVICE_NAME_LIST_MAX"));
return -1;
/* Allocate return buffer. */
if (VIR_ALLOC_N(ret->names.names_val, args->maxnames) < 0) {
+ virNodeDeviceFree(dev);
remoteDispatchOOMError(rerr);
return -1;
}
virNodeDeviceListCaps (dev, ret->names.names_val,
args->maxnames);
if (ret->names.names_len == -1) {
+ virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
VIR_FREE(ret->names.names_val);
return -1;
}
+ virNodeDeviceFree(dev);
return 0;
}
}
if (virNodeDeviceDettach(dev) == -1) {
+ virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
return -1;
}
+ virNodeDeviceFree(dev);
return 0;
}
}
if (virNodeDeviceReAttach(dev) == -1) {
+ virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
return -1;
}
+ virNodeDeviceFree(dev);
return 0;
}
}
if (virNodeDeviceReset(dev) == -1) {
+ virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
return -1;
}
+ virNodeDeviceFree(dev);
return 0;
}
}
if (virNodeDeviceDestroy(dev) == -1) {
+ virNodeDeviceFree(dev);
remoteDispatchConnError(rerr, conn);
return -1;
}
+ virNodeDeviceFree(dev);
return 0;
}